[ruby/csv] Fix a bug that strip: true removes newlines

https://github.com/ruby/csv/commit/5540d35a30
This commit is contained in:
Kouhei Sutou 2019-04-23 05:54:44 +09:00 коммит произвёл Hiroshi SHIBATA
Родитель 8c0edbd79d
Коммит 198281a71d
2 изменённых файлов: 31 добавлений и 1 удалений

Просмотреть файл

@ -429,7 +429,7 @@ class CSV
end
@need_robust_parsing = true
elsif @strip
strip_values = " \t\r\n\f\v"
strip_values = " \t\f\v"
@escaped_strip = strip_values.encode(@encoding)
if @quote_character
@strip_value = Regexp.new("[#{strip_values}]+".encode(@encoding))

Просмотреть файл

@ -45,4 +45,34 @@ class TestCSVParseStrip < Test::Unit::TestCase
strip: %Q{"},
quote_char: nil))
end
def test_do_not_strip_cr
assert_equal([
["a", "b "],
["a", "b "],
],
CSV.parse(%Q{"a" ,"b " \r} +
%Q{"a" ,"b " \r},
strip: true))
end
def test_do_not_strip_lf
assert_equal([
["a", "b "],
["a", "b "],
],
CSV.parse(%Q{"a" ,"b " \n} +
%Q{"a" ,"b " \n},
strip: true))
end
def test_do_not_strip_crlf
assert_equal([
["a", "b "],
["a", "b "],
],
CSV.parse(%Q{"a" ,"b " \r\n} +
%Q{"a" ,"b " \r\n},
strip: true))
end
end