Sha256: c7fe8c4cc931ab4c1c30bef3656b03bd8267a4bc792b6eb4fdb0ba84b354b196

Contents?: true

Size: 844 Bytes

Versions: 1

Compression:

Stored size: 844 Bytes

Contents

module DataImporter
  class CsvReader
    attr_accessor :csv, :headers, :seprator, :mappings

    def initialize(file_name, mappings=nil)
      @seprator = ","
      file = File.open(file_name, 'r')
      @csv = CSV.new(file, headers: true)
      @headers = File.open(file_name, 'r') {|f| f.readline.chomp}.split(@seprator)
      @mappings = mappings || get_default_mappings
    end

    def row
      @csv.shift
    end

    def get_mapped_row_hash
      csv_row = row
      return nil unless csv_row
      csv_row = csv_row.to_hash
      mappings.each { |mk, mv| csv_row[mv] = csv_row.delete(mk)}
      csv_row
    end

    private
    def get_default_mappings
      @headers.inject({}) {|mh, h| mh[h] = get_field_name(h); mh}
    end

    def get_field_name(field)
      field.downcase.gsub(/\s+/, ' ').gsub(" ","_").to_sym
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
data_importer-0.2.0 lib/data_importer/csv_reader.rb