summaryrefslogtreecommitdiff
path: root/lib/csv
diff options
context:
space:
mode:
authorJoakim Antman <[email protected]>2021-10-03 22:10:48 +0300
committerSutou Kouhei <[email protected]>2021-10-24 05:57:33 +0900
commit7f3dd601c895354c041988251a0be05a8a423664 (patch)
treebfe09f2aa1818fc07aeeb54c24aa55078865d47c /lib/csv
parent39ecdabe67d1bc7c864ada6f282590dbc9d3a14e (diff)
[ruby/csv] Changed line ending handling to consider the combination \r\n as a single entry when row is faulty (https://github.com/ruby/csv/pull/220)
https://github.com/ruby/csv/commit/29cef9ea9d
Notes
Notes: Merged: https://github.com/ruby/ruby/pull/5010
Diffstat (limited to 'lib/csv')
-rw-r--r--lib/csv/parser.rb8
1 files changed, 4 insertions, 4 deletions
diff --git a/lib/csv/parser.rb b/lib/csv/parser.rb
index 2fb3b0a46e..d0b02a6423 100644
--- a/lib/csv/parser.rb
+++ b/lib/csv/parser.rb
@@ -526,7 +526,7 @@ class CSV
@cr = "\r".encode(@encoding)
@lf = "\n".encode(@encoding)
- @cr_or_lf = Regexp.new("[\r\n]".encode(@encoding))
+ @line_end = Regexp.new("\r\n|\n|\r".encode(@encoding))
@not_line_end = Regexp.new("[^\r\n]+".encode(@encoding))
end
@@ -914,7 +914,7 @@ class CSV
message = "Any value after quoted field isn't allowed"
raise MalformedCSVError.new(message, @lineno)
elsif @unquoted_column_value and
- (new_line = @scanner.scan(@cr_or_lf))
+ (new_line = @scanner.scan(@line_end))
ignore_broken_line
message = "Unquoted fields do not allow new line " +
"<#{new_line.inspect}>"
@@ -923,7 +923,7 @@ class CSV
ignore_broken_line
message = "Illegal quoting"
raise MalformedCSVError.new(message, @lineno)
- elsif (new_line = @scanner.scan(@cr_or_lf))
+ elsif (new_line = @scanner.scan(@line_end))
ignore_broken_line
message = "New line must be <#{@row_separator.inspect}> " +
"not <#{new_line.inspect}>"
@@ -1089,7 +1089,7 @@ class CSV
def ignore_broken_line
@scanner.scan_all(@not_line_end)
- @scanner.scan_all(@cr_or_lf)
+ @scanner.scan_all(@line_end)
@lineno += 1
end