Completed
Pull Request — master (#1)
by Marcelo
01:11
created

MappedColumnsParser.parse()   A

Complexity

Conditions 1

Size

Total Lines 13

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
c 1
b 0
f 0
dl 0
loc 13
rs 9.4285
1
require "csv"
2
3
module Koine
4
  module Csv
5
    class MappedColumnsParser < CsvParser
6
      attr_reader :column_names
7
8
      def initialize(options = {})
9
        super(options)
10
11
        @column_names = options.fetch(:column_names)
12
      end
13
14
      def parse(contents, &block)
15
        mapped = []
16
        CSV.parse(contents, parser_options) do |row|
17
          new_row = {}
18
19
          row.each_with_index do |value, index|
20
            new_row[column_name(index)] = value
21
          end
22
23
          mapped << new_row
24
        end
25
        mapped
26
      end
27
28
      def column_name(index)
29
        column_names.fetch(index)
30
      end
31
    end
32
  end
33
end
34