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

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

[Source]

# File csv.rb, line 577
    def initialize(dev)
      raise RuntimeError.new('Do not instanciate this class directly.')
    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.

[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

[Source]

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

[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

[Source]

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

[Validate]