Module: Csv2hash::Parser::Mapping

Includes:
Csv2hash::Parser
Defined in:
lib/csv2hash/parser/mapping.rb

Instance Method Summary collapse

Methods included from Csv2hash::Parser

#treat

Instance Method Details

#fill!Object



6
7
8
9
10
11
12
13
# File 'lib/csv2hash/parser/mapping.rb', line 6

def fill!
  self.data = {}.tap do |data_computed|
    data_computed[:data] ||= []
    data_computed[:data] << {}.tap do |data_parsed|
      fill_it data_parsed, data_source
    end
  end
end

#fill_it(parsed_data, source_data) ⇒ Object



15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/csv2hash/parser/mapping.rb', line 15

def fill_it parsed_data, source_data
  definition.cells.each do |cell|
    if cell.rules.fetch :mappable
      y, x = cell.rules.fetch :position
      if (nested = cell.rules.fetch :nested)
        parsed_data[nested] ||= {}
        parsed_data[nested][cell.rules.fetch(:key)] = treat(source_data[y][x])
      else
        parsed_data[cell.rules.fetch(:key)] = treat(source_data[y][x])
      end
    end
  end
end