class FlatKit::Xsv::Reader

Attributes

count[R]
fields[R]
input[R]

Public Class Methods

default_csv_options() click to toggle source
# File lib/flat_kit/xsv/reader.rb, line 14
def self.default_csv_options
  {
    headers: :first_row,
    converters: :numeric,
    return_headers: false
  }
end
format_name() click to toggle source
# File lib/flat_kit/xsv/reader.rb, line 10
def self.format_name
  ::FlatKit::Xsv::Format.format_name
end
new(source:, compare_fields: :none, **csv_options) click to toggle source
Calls superclass method FlatKit::Reader::new
# File lib/flat_kit/xsv/reader.rb, line 22
def initialize(source:, compare_fields: :none, **csv_options)
  super(source: source, compare_fields: compare_fields)
  @input = ::FlatKit::Input.from(source)
  @count = 0
  @csv_options = Reader.default_csv_options.merge(csv_options)
  @fields = nil
  @csv = CSV.new(input.io, **@csv_options)
end

Public Instance Methods

each() { |record| ... } click to toggle source
# File lib/flat_kit/xsv/reader.rb, line 31
def each
  @csv.each do |row|
    @fields = row.headers if @fields.nil?
    record = ::FlatKit::Xsv::Record.new(data: row, compare_fields: compare_fields)
    @count += 1
    yield record
  end
  input.close
rescue => e
  ::FlatKit.logger.error "Error reading xsv records from #{input.name}: #{e}"
  raise ::FlatKit::Error, e
end