Sha256: 69a98671399853f20457680291983ebdf6bf681263b6a158eddfbae35a8763e4

Contents?: true

Size: 980 Bytes

Versions: 12

Compression:

Stored size: 980 Bytes

Contents

require_relative '../expectation'

module Csv2hash
  module Parser
    module Collection
      include Parser
      include Expectation

      def fill!
        self.data = {}.tap do |data_computed|
          data_computed[:data] ||= []
          self.data_source.each_with_index do |line, y|
            next if unexpected_line?(line, y)
            data_computed[:data] << {}.tap do |data_parsed|
              fill_it data_parsed, line
            end
          end
        end
      end

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

    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
csv2hash-0.7.2 lib/csv2hash/parser/collection.rb
csv2hash-0.7.1 lib/csv2hash/parser/collection.rb
csv2hash-0.7.0 lib/csv2hash/parser/collection.rb
csv2hash-0.6.8 lib/csv2hash/parser/collection.rb
csv2hash-0.6.7 lib/csv2hash/parser/collection.rb
csv2hash-0.6.6 lib/csv2hash/parser/collection.rb
csv2hash-0.6.5 lib/csv2hash/parser/collection.rb
csv2hash-0.6.4 lib/csv2hash/parser/collection.rb
csv2hash-0.6.3 lib/csv2hash/parser/collection.rb
csv2hash-0.6.2 lib/csv2hash/parser/collection.rb
csv2hash-0.6.1 lib/csv2hash/parser/collection.rb
csv2hash-0.6.0 lib/csv2hash/parser/collection.rb