Class: CSV::Parser
- Inherits:
-
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, UnexpectedError, UnoptimizedStringIO
Instance Method Summary
collapse
Constructor Details
#initialize(input, options) ⇒ Parser
Returns a new instance of Parser.
326
327
328
329
330
331
332
|
# File 'lib/csv/parser.rb', line 326
def initialize(input, options)
@input = input
@options = options
@samples = []
prepare
end
|
Instance Method Details
#column_separator ⇒ Object
334
335
336
|
# File 'lib/csv/parser.rb', line 334
def column_separator
@column_separator
end
|
#field_size_limit ⇒ Object
346
347
348
|
# File 'lib/csv/parser.rb', line 346
def field_size_limit
@max_field_size&.succ
end
|
366
367
368
|
# File 'lib/csv/parser.rb', line 366
def
@use_headers and @headers.nil?
end
|
362
363
364
|
# File 'lib/csv/parser.rb', line 362
def
@headers
end
|
#liberal_parsing? ⇒ Boolean
378
379
380
|
# File 'lib/csv/parser.rb', line 378
def liberal_parsing?
@liberal_parsing
end
|
#line ⇒ Object
386
387
388
|
# File 'lib/csv/parser.rb', line 386
def line
last_line
end
|
#lineno ⇒ Object
382
383
384
|
# File 'lib/csv/parser.rb', line 382
def lineno
@lineno
end
|
#max_field_size ⇒ Object
350
351
352
|
# File 'lib/csv/parser.rb', line 350
def max_field_size
@max_field_size
end
|
#parse(&block) ⇒ Object
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
|
# File 'lib/csv/parser.rb', line 390
def parse(&block)
return to_enum(__method__) unless block_given?
if @return_headers and @headers and @raw_headers
= Row.new(@headers, @raw_headers, true)
if @unconverted_fields
= add_unconverted_fields(, [])
end
yield
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
raise InvalidEncodingError.new(@encoding, 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 ⇒ Object
342
343
344
|
# File 'lib/csv/parser.rb', line 342
def quote_character
@quote_character
end
|
370
371
372
|
# File 'lib/csv/parser.rb', line 370
def
@return_headers
end
|
#row_separator ⇒ Object
338
339
340
|
# File 'lib/csv/parser.rb', line 338
def row_separator
@row_separator
end
|
#skip_blanks? ⇒ Boolean
374
375
376
|
# File 'lib/csv/parser.rb', line 374
def skip_blanks?
@skip_blanks
end
|
#skip_lines ⇒ Object
354
355
356
|
# File 'lib/csv/parser.rb', line 354
def skip_lines
@skip_lines
end
|
#unconverted_fields? ⇒ Boolean
358
359
360
|
# File 'lib/csv/parser.rb', line 358
def unconverted_fields?
@unconverted_fields
end
|
431
432
433
|
# File 'lib/csv/parser.rb', line 431
def
@use_headers
end
|