Sha256: 5709976bfd89fa1d125e2cfea0a9c4cae100f6d57db2c60b40e85a47066d7943

Contents?: true

Size: 552 Bytes

Versions: 5

Compression:

Stored size: 552 Bytes

Contents

# frozen_string_literal: true

require 'csv'

class CsvSource
  attr_reader :filename, :delimeter, :quote_char, :headers

  def initialize(filename:, headers: true, delimeter: "\t", quote_char: '"')
    @filename   = filename
    @headers    = headers
    @delimeter  = delimeter
    @quote_char = quote_char
  end

  def each
    CSV.open(filename,
      col_sep: delimeter,
      headers: headers,
      header_converters: :symbol,
      quote_char: quote_char) do |csv|
      csv.each do |row|
        yield(row.to_hash)
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
free_zipcode_data-1.0.5 lib/etl/csv_source.rb
free_zipcode_data-1.0.4 lib/etl/csv_source.rb
free_zipcode_data-1.0.3 lib/etl/csv_source.rb
free_zipcode_data-1.0.2 lib/etl/csv_source.rb
free_zipcode_data-1.0.1 lib/etl/csv_source.rb