Class: CSV::Reader

Class | CSV::Reader
In: | csv.rb
Parent: | Object

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

### Methods

close create each new parse shift

### Included Modules

Enumerable

### Public Class methods

create(str_or_readable, fs = ',', rs = nil)

Returns reader instance.

[Source]

    # File csv.rb, line 542
        def Reader.create(str_or_readable, fs = ',', rs = nil)
          case str_or_readable
          when IO
            IOReader.new(str_or_readable, fs, rs)
          when String
            StringReader.new(str_or_readable, fs, rs)
          else
            IOReader.new(str_or_readable, fs, rs)
          end
        end

new(dev)

[Source]

    # File csv.rb, line 577
        def initialize(dev)
          raise RuntimeError.new('Do not instanciate this class directly.')
        end

parse(str_or_readable, fs = ',', rs = nil) {|row| ...}

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.

[Source]

    # File csv.rb, line 528
        def Reader.parse(str_or_readable, fs = ',', rs = nil, &block)
          reader = Reader.create(str_or_readable, fs, rs)
          if block
            reader.each do |row|
              yield(row)
            end
            reader.close
            nil
          else
            reader
          end
        end

### Public Instance methods

close()

[Source]

    # File csv.rb, line 571
        def close
          terminate
        end

each() {|row| ...}

[Source]

    # File csv.rb, line 553
        def each
          while true
            row = []
            parsed_cells = get_row(row)
            if parsed_cells == 0
              break
            end
            yield(row)
          end
          nil
        end

shift()

[Source]

    # File csv.rb, line 565
        def shift
          row = []
          parsed_cells = get_row(row)
          row
        end

[Validate]