class ArcFurnace::MultiCSVSource

Attributes

file[R]
value[R]

Public Class Methods

new(filenames: , encoding: 'UTF-8') click to toggle source
# File lib/arc-furnace/multi_csv_source.rb, line 11
def initialize(filenames: , encoding: 'UTF-8')
  @encoding = encoding
  @filenames = filenames.reverse
  open_next_file
end

Public Instance Methods

advance() click to toggle source
# File lib/arc-furnace/multi_csv_source.rb, line 22
def advance
  advance_in_current_file || open_next_file
end
empty?() click to toggle source

Is this source empty?

# File lib/arc-furnace/multi_csv_source.rb, line 18
def empty?
  !value
end

Private Instance Methods

advance_in_current_file() click to toggle source
# File lib/arc-furnace/multi_csv_source.rb, line 28
def advance_in_current_file
  @value =
      begin
        csv_to_hash_with_duplicates(csv.next)
      rescue StopIteration
        nil
      end
  value
end
open_next_file() click to toggle source
# File lib/arc-furnace/multi_csv_source.rb, line 38
def open_next_file
  file.close if file
  @file = nil
  if filenames.empty?
    nil
  else
    @file = File.open(filenames.pop, encoding: encoding)
    @csv = CSV.new(file, encoding: encoding, headers: true).each
    advance_in_current_file || open_next_file
  end
end