Class: CSV::Parser

Inherits:
Object
  • Object
show all
Defined in:
lib/csv/parser.rb

Overview

Note: Don’t use this class directly. This is an internal class.

Defined Under Namespace

Classes: InputsScanner, InvalidEncoding, Scanner, UnoptimizedStringIO

Instance Method Summary collapse

Constructor Details

#initialize(input, options) ⇒ Parser

Returns a new instance of Parser.



259
260
261
262
263
264
265
# File 'lib/csv/parser.rb', line 259

def initialize(input, options)
  @input = input
  @options = options
  @samples = []

  prepare
end

Instance Method Details

#column_separatorObject



267
268
269
# File 'lib/csv/parser.rb', line 267

def column_separator
  @column_separator
end

#field_size_limitObject



279
280
281
# File 'lib/csv/parser.rb', line 279

def field_size_limit
  @field_size_limit
end

#header_row?Boolean

Returns:

  • (Boolean)


295
296
297
# File 'lib/csv/parser.rb', line 295

def header_row?
  @use_headers and @headers.nil?
end

#headersObject



291
292
293
# File 'lib/csv/parser.rb', line 291

def headers
  @headers
end

#liberal_parsing?Boolean

Returns:

  • (Boolean)


307
308
309
# File 'lib/csv/parser.rb', line 307

def liberal_parsing?
  @liberal_parsing
end

#lineObject



315
316
317
# File 'lib/csv/parser.rb', line 315

def line
  last_line
end

#linenoObject



311
312
313
# File 'lib/csv/parser.rb', line 311

def lineno
  @lineno
end

#parse(&block) ⇒ Object



319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
# File 'lib/csv/parser.rb', line 319

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)
  end
end

#quote_characterObject



275
276
277
# File 'lib/csv/parser.rb', line 275

def quote_character
  @quote_character
end

#return_headers?Boolean

Returns:

  • (Boolean)


299
300
301
# File 'lib/csv/parser.rb', line 299

def return_headers?
  @return_headers
end

#row_separatorObject



271
272
273
# File 'lib/csv/parser.rb', line 271

def row_separator
  @row_separator
end

#skip_blanks?Boolean

Returns:

  • (Boolean)


303
304
305
# File 'lib/csv/parser.rb', line 303

def skip_blanks?
  @skip_blanks
end

#skip_linesObject



283
284
285
# File 'lib/csv/parser.rb', line 283

def skip_lines
  @skip_lines
end

#unconverted_fields?Boolean

Returns:

  • (Boolean)


287
288
289
# File 'lib/csv/parser.rb', line 287

def unconverted_fields?
  @unconverted_fields
end

#use_headers?Boolean

Returns:

  • (Boolean)


351
352
353
# File 'lib/csv/parser.rb', line 351

def use_headers?
  @use_headers
end