Skip to content

Commit 06a65b0

Browse files
committed
parser: use row separator explicitly
It will improve performance a bit. (But I haven't confirmed it yet...)
1 parent 5c6523d commit 06a65b0

File tree

1 file changed

+5
-3
lines changed

1 file changed

+5
-3
lines changed

lib/csv/parser.rb

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -85,9 +85,10 @@ def keep_drop
8585
# If there is no more data (eos? = true), it returns "".
8686
#
8787
class InputsScanner
88-
def initialize(inputs, encoding, chunk_size: 8192)
88+
def initialize(inputs, encoding, row_separator, chunk_size: 8192)
8989
@inputs = inputs.dup
9090
@encoding = encoding
91+
@row_separator = row_separator
9192
@chunk_size = chunk_size
9293
@last_scanner = @inputs.empty?
9394
@keeps = []
@@ -250,7 +251,7 @@ def read_chunk
250251
@last_scanner = @inputs.empty?
251252
true
252253
else
253-
chunk = input.gets(nil, @chunk_size)
254+
chunk = input.gets(@row_separator, @chunk_size)
254255
if chunk
255256
raise InvalidEncoding unless chunk.valid_encoding?
256257
@scanner = StringScanner.new(chunk)
@@ -778,6 +779,7 @@ def build_scanner
778779
Integer((ENV["CSV_PARSER_SCANNER_TEST_CHUNK_SIZE"] || "1"), 10)
779780
InputsScanner.new(inputs,
780781
@encoding,
782+
@row_separator,
781783
chunk_size: chunk_size)
782784
end
783785
else
@@ -807,7 +809,7 @@ def build_scanner
807809
StringIO.new(sample)
808810
end
809811
inputs << @input
810-
InputsScanner.new(inputs, @encoding)
812+
InputsScanner.new(inputs, @encoding, @row_separator)
811813
end
812814
end
813815
end

0 commit comments

Comments
 (0)