Module: RemoteTable::Csv

Defined in:
lib/remote_table/file/csv.rb

Instance Method Summary collapse

Instance Method Details

#each_row(&block) ⇒ Object



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/remote_table/file/csv.rb', line 3

def each_row(&block)
  skip_rows!
  FasterCSV.foreach(path, fastercsv_options) do |row|
    ordered_hash = ActiveSupport::OrderedHash.new
    filled_values = 0
    case row
    when FasterCSV::Row
      row.each do |header, value|
        next if header.blank?
        value = '' if value.nil?
        ordered_hash[header] = value
        filled_values += 1 if value.present?
      end
    when Array
      index = 0
      row.each do |value|
        value = '' if value.nil?
        ordered_hash[index] = value
        filled_values += 1 if value.present?
        index += 1
      end
    else
      raise "Unexpected #{row.inspect}"
    end
    yield ordered_hash if keep_blank_rows or filled_values.nonzero?
  end
ensure
  restore_rows!
end