Sha256: a0e883403a5729e7a57943e332df68deec4ee293a7af77ea755f85fe82819033

Contents?: true

Size: 722 Bytes

Versions: 6

Compression:

Stored size: 722 Bytes

Contents

require 'arc-furnace/source'
require 'arc-furnace/csv_to_hash_with_duplicate_headers'
require 'csv'

module ArcFurnace
  class CSVSource < Source
    include CSVToHashWithDuplicateHeaders
    private_attr_reader :csv, :file
    attr_reader :value

    def initialize(filename: , encoding: 'UTF-8')
      @file = File.open(filename, encoding: encoding)
      @csv = CSV.new(file, encoding: encoding, headers: true).each
      advance
    end

    # Is this source empty?
    def empty?
      !value
    end

    def advance
      @value =
        begin
          csv_to_hash_with_duplicates(csv.next) if csv
        rescue StopIteration
          file.close
          @csv = nil
          nil
        end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
arc-furnace-0.1.7 lib/arc-furnace/csv_source.rb
arc-furnace-0.1.6 lib/arc-furnace/csv_source.rb
arc-furnace-0.1.5 lib/arc-furnace/csv_source.rb
arc-furnace-0.1.4 lib/arc-furnace/csv_source.rb
arc-furnace-0.1.3 lib/arc-furnace/csv_source.rb
arc-furnace-0.1.0 lib/arc-furnace/csv_source.rb