Class: Arrow::CSVReader

Inherits:
Object
  • Object
show all
Defined in:
lib/arrow/csv-reader.rb

Instance Method Summary collapse

Constructor Details

#initialize(csv) ⇒ CSVReader

Returns a new instance of CSVReader.



22
23
24
# File 'lib/arrow/csv-reader.rb', line 22

def initialize(csv)
  @csv = csv
end

Instance Method Details

#readObject



26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# File 'lib/arrow/csv-reader.rb', line 26

def read
  values_set = []
  @csv.each do |row|
    if row.is_a?(CSV::Row)
      row = row.collect(&:last)
    end
    row.each_with_index do |value, i|
      values = (values_set[i] ||= [])
      values << value
    end
  end
  return nil if values_set.empty?

  arrays = values_set.collect.with_index do |values, i|
    ArrayBuilder.build(values)
  end
  if @csv.headers
    names = @csv.headers
  else
    names = arrays.size.times.collect(&:to_s)
  end
  raw_table = {}
  names.each_with_index do |name, i|
    raw_table[name] = arrays[i]
  end
  Table.new(raw_table)
end