Feature #4017 » ruby_19_csv_parser_speedup.patch
lib/csv.rb (working copy) | ||
---|---|---|
return line
|
||
when @col_sep
|
||
return line << nil
|
||
when @col_sep_quote
|
||
buf = @quote_char
|
||
next
|
||
end
|
||
break unless buf.slice!(0, @col_sep.size) == @col_sep
|
||
... | ... | |
return unless @data_buf = @io.gets(@quote_char, @io_read_limit)
|
||
end
|
||
loop do
|
||
if newline = @data_buf.index(@row_sep)
|
||
break if newline == @data_buf.size - @row_sep.size
|
||
return @data_buf.slice!(0, newline + @row_sep.size)
|
||
end
|
||
case @data_buf
|
||
when @col_sep_quote, @quote_char
|
||
else
|
||
loop do
|
||
if newline = @data_buf.index(@row_sep)
|
||
break if newline == @data_buf.size - @row_sep.size
|
||
return @data_buf.slice!(0, newline + @row_sep.size)
|
||
end
|
||
break if @io.eof? || @data_buf.end_with?(@quote_char)
|
||
break if @io.eof? || @data_buf.end_with?(@quote_char)
|
||
if @field_size_limit && @data_buf.size > @field_size_limit
|
||
raise MalformedCSVError, "Field size exceeded on line #{@lineno}."
|
||
end
|
||
if @field_size_limit && @data_buf.size > @field_size_limit
|
||
raise MalformedCSVError, "Field size exceeded on line #{@lineno}."
|
||
end
|
||
@data_buf += @io.gets(@quote_char, @io_read_limit) unless align_data_buf
|
||
@data_buf += @io.gets(@quote_char, @io_read_limit) unless align_data_buf
|
||
end
|
||
end
|
||
return_buf = @data_buf
|
||
... | ... | |
@field_size_limit = options.delete(:field_size_limit)
|
||
@io_read_limit = options.delete(:io_read_limit)
|
||
@nl_lf = encode_str("\r\n")
|
||
@col_sep_quote = @col_sep + @quote_char
|
||
end
|
||
#
|
- « Previous
- 1
- 2
- Next »