class CSV::Parser
Note: Don’t use this class directly. This is an internal class.
Constants
- SCANNER_TEST
- SCANNER_TEST_CHUNK_SIZE_NAME
- SCANNER_TEST_CHUNK_SIZE_VALUE
- STRING_SCANNER_SCAN_ACCEPT_STRING
Public Class Methods
new(input, options)
click to toggle source
# File csv/parser.rb, line 324 def initialize(input, options) @input = input @options = options @samples = [] prepare end
Public Instance Methods
column_separator()
click to toggle source
# File csv/parser.rb, line 332 def column_separator @column_separator end
field_size_limit()
click to toggle source
# File csv/parser.rb, line 344 def field_size_limit @max_field_size&.succ end
header_row?()
click to toggle source
# File csv/parser.rb, line 364 def header_row? @use_headers and @headers.nil? end
headers()
click to toggle source
# File csv/parser.rb, line 360 def headers @headers end
liberal_parsing?()
click to toggle source
# File csv/parser.rb, line 376 def liberal_parsing? @liberal_parsing end
line()
click to toggle source
# File csv/parser.rb, line 384 def line last_line end
lineno()
click to toggle source
# File csv/parser.rb, line 380 def lineno @lineno end
max_field_size()
click to toggle source
# File csv/parser.rb, line 348 def max_field_size @max_field_size end
parse() { |headers| ... }
click to toggle source
# File csv/parser.rb, line 388 def parse(&block) return to_enum(__method__) unless block_given? if @return_headers and @headers and @raw_headers headers = Row.new(@headers, @raw_headers, true) if @unconverted_fields headers = add_unconverted_fields(headers, []) end yield headers end begin @scanner ||= build_scanner if quote_character.nil? parse_no_quote(&block) elsif @need_robust_parsing parse_quotable_robust(&block) else parse_quotable_loose(&block) end rescue InvalidEncoding if @scanner ignore_broken_line lineno = @lineno else lineno = @lineno + 1 end message = "Invalid byte sequence in #{@encoding}" raise MalformedCSVError.new(message, lineno) rescue UnexpectedError => error if @scanner ignore_broken_line lineno = @lineno else lineno = @lineno + 1 end message = "This should not be happen: #{error.message}: " message += "Please report this to https://github.com/ruby/csv/issues" raise MalformedCSVError.new(message, lineno) end end
quote_character()
click to toggle source
# File csv/parser.rb, line 340 def quote_character @quote_character end
return_headers?()
click to toggle source
# File csv/parser.rb, line 368 def return_headers? @return_headers end
row_separator()
click to toggle source
# File csv/parser.rb, line 336 def row_separator @row_separator end
skip_blanks?()
click to toggle source
# File csv/parser.rb, line 372 def skip_blanks? @skip_blanks end
skip_lines()
click to toggle source
# File csv/parser.rb, line 352 def skip_lines @skip_lines end
unconverted_fields?()
click to toggle source
# File csv/parser.rb, line 356 def unconverted_fields? @unconverted_fields end
use_headers?()
click to toggle source
# File csv/parser.rb, line 430 def use_headers? @use_headers end