summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorSutou Kouhei <kou@clear-code.com>2021-12-24 10:18:35 +0900
committerSutou Kouhei <kou@cozmixng.org>2021-12-24 14:35:33 +0900
commit002ce9f515d984aa0fe43c51448b36ea3651a395 (patch)
tree303ff1cd55c76596633322ae1cef99d28282de5f /lib
parent4a5d372ca8902a649928eb0689aca7edcfaa07b6 (diff)
[ruby/csv] parser: use row separator explicitly
It will improve performance a bit. (But I haven't confirmed it yet...) https://github.com/ruby/csv/commit/06a65b0302
Notes
Notes: Merged: https://github.com/ruby/ruby/pull/5336
Diffstat (limited to 'lib')
-rw-r--r--lib/csv/parser.rb8
1 files changed, 5 insertions, 3 deletions
diff --git a/lib/csv/parser.rb b/lib/csv/parser.rb
index e1fe559a41..78ff363d69 100644
--- a/lib/csv/parser.rb
+++ b/lib/csv/parser.rb
@@ -85,9 +85,10 @@ class CSV
# If there is no more data (eos? = true), it returns "".
#
class InputsScanner
- def initialize(inputs, encoding, chunk_size: 8192)
+ def initialize(inputs, encoding, row_separator, chunk_size: 8192)
@inputs = inputs.dup
@encoding = encoding
+ @row_separator = row_separator
@chunk_size = chunk_size
@last_scanner = @inputs.empty?
@keeps = []
@@ -250,7 +251,7 @@ class CSV
@last_scanner = @inputs.empty?
true
else
- chunk = input.gets(nil, @chunk_size)
+ chunk = input.gets(@row_separator, @chunk_size)
if chunk
raise InvalidEncoding unless chunk.valid_encoding?
@scanner = StringScanner.new(chunk)
@@ -778,6 +779,7 @@ class CSV
Integer((ENV["CSV_PARSER_SCANNER_TEST_CHUNK_SIZE"] || "1"), 10)
InputsScanner.new(inputs,
@encoding,
+ @row_separator,
chunk_size: chunk_size)
end
else
@@ -807,7 +809,7 @@ class CSV
StringIO.new(sample)
end
inputs << @input
- InputsScanner.new(inputs, @encoding)
+ InputsScanner.new(inputs, @encoding, @row_separator)
end
end
end