Sha256: ba31b49f8b3141077efbc475258262c532ed0e20c0d56005c888b792433c31dd

Contents?: true

Size: 758 Bytes

Versions: 8

Compression:

Stored size: 758 Bytes

Contents

# frozen_string_literal: true

class ActiveReport::Array < ActiveReport::Base

  def export
    @data = munge_first(@data)
    @data = @data.unshift(@opts[:headers]) unless @opts[:headers].nil?

    @opts[:stream] ? export_stream : export_csv
  end

  def import
    array = merge(@opts[:headers])

    CSV.foreach(@data, @opts[:options]) do |row|
      row = encode_to_utf8(row) if csv_force_encoding?
      array.push(row)
    end

    array = array.flatten if array.size < 2
    metatransform(array)
  end

  private

  def export_csv
    CSV.generate(@opts[:options]) do |csv|
      @data.each { |row| csv << row }
    end
  end

  def export_stream
    Enumerator.new do |csv|
      @data.each { |row| csv << CSV.generate_line(row) }
    end
  end

end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
active_report-5.4.0 lib/active_report/array.rb
active_report-5.3.0 lib/active_report/array.rb
active_report-5.2.7 lib/active_report/array.rb
active_report-5.2.6 lib/active_report/array.rb
active_report-5.2.5 lib/active_report/array.rb
active_report-5.2.4 lib/active_report/array.rb
active_report-5.2.3 lib/active_report/array.rb
active_report-5.2.2 lib/active_report/array.rb