class ActiveReport::Hash

Public Instance Methods

export() click to toggle source
# File lib/active_report/hash.rb, line 5
def export
  @data = munge(@data)
  @opts[:headers] = (@opts[:headers] || filter_humanize_keys(@data))

  @opts[:stream] ? export_stream : export_csv
end
import() click to toggle source
# File lib/active_report/hash.rb, line 12
def import
  array = []

  CSV.foreach(@data, @opts[:options]).with_index do |data, i|
    data = encode_to_utf8(data) if csv_force_encoding?

    if @opts[:headers].nil? && i.zero?
      @opts[:headers] = data
    else
      subdata = {}
      @opts[:headers].each_with_index { |header, idx| subdata[header.to_s] = data[idx] }
      filter(subdata)
      array.push(subdata)
    end
  end

  array = array.first if array.size == 1
  metatransform(array)
end

Private Instance Methods

export_csv() click to toggle source
# File lib/active_report/hash.rb, line 34
def export_csv
  CSV.generate(@opts[:options]) do |csv|
    csv << @opts[:headers]

    @data.each { |row| csv << filter_values(row) }
  end
end
export_stream() click to toggle source
# File lib/active_report/hash.rb, line 42
def export_stream
  Enumerator.new do |csv|
    csv << CSV.generate_line(@opts[:headers])

    @data.each { |row| csv << CSV.generate_line(filter_values(row)) }
  end
end