Skip to content

Commit c2cc984

Browse files
committed
parser: simplify :skip_lines implementation
We can use #each_line here because :skip_lines is a line based process.
1 parent 86de331 commit c2cc984

File tree

1 file changed

+7
-10
lines changed

1 file changed

+7
-10
lines changed

lib/csv/parser.rb

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -901,18 +901,15 @@ def build_scanner
901901
def skip_needless_lines
902902
return unless @skip_lines
903903

904-
until @scanner.eos?
905-
@scanner.keep_start
906-
line = @scanner.scan_all(@not_line_end) || "".encode(@encoding)
904+
@scanner.keep_start
905+
@scanner.each_line(@row_separator) do |line|
907906
line << @row_separator if parse_row_end
908-
if skip_line?(line)
909-
@lineno += 1
910-
@scanner.keep_drop
911-
else
912-
@scanner.keep_back
913-
return
914-
end
907+
break unless skip_line?(line)
908+
@lineno += 1
909+
@scanner.keep_drop
910+
@scanner.keep_start
915911
end
912+
@scanner.keep_back
916913
end
917914

918915
def skip_line?(line)

0 commit comments

Comments
 (0)