CSV formatted string/stream reader.
EXAMPLE
read CSV lines untill the first column is 'stop'.
CSV::Reader.parse(File.open('bigdata', 'rb')) do |row|
p row
break if !row[0].is_null && row[0].data == 'stop'
end
Included Modules
Public Class methods
Returns reader instance.
# File csv.rb, line 542
542: def Reader.create(str_or_readable, fs = ',', rs = nil)
543: case str_or_readable
544: when IO
545: IOReader.new(str_or_readable, fs, rs)
546: when String
547: StringReader.new(str_or_readable, fs, rs)
548: else
549: IOReader.new(str_or_readable, fs, rs)
550: end
551: end
# File csv.rb, line 577
577: def initialize(dev)
578: raise RuntimeError.new('Do not instanciate this class directly.')
579: end
Parse CSV data and get lines. Given block is called for each parsed row. Block value is always nil. Rows are not cached for performance reason.
# File csv.rb, line 528
528: def Reader.parse(str_or_readable, fs = ',', rs = nil, &block)
529: reader = Reader.create(str_or_readable, fs, rs)
530: if block
531: reader.each do |row|
532: yield(row)
533: end
534: reader.close
535: nil
536: else
537: reader
538: end
539: end