Sha256: 0a8be91721c5417d41ee6762aa77a5d799b47b6ec999c4b7f848a4b3d70816b8

Contents?: true

Size: 808 Bytes

Versions: 10

Compression:

Stored size: 808 Bytes

Contents

class Eco::API::Common::People::DefaultParsers::CSVParser < Eco::API::Common::Loaders::Parser
  attribute :csv

  def parser(data, deps)
    Eco::CSV.parse(data, headers: true, skip_blanks: true).each_with_object([]) do |row, arr_hash|
      row_hash = row.headers.uniq.each_with_object({}) do |attr, hash|
        next if attr.to_s.strip.empty?
        value            = row[attr]
        hash[attr.strip] = value.to_s.empty?? nil : value
      end
      arr_hash.push(row_hash)
    end
  end

  def serializer(array_hash, deps)
    arr_rows = []
    unless array_hash.empty?
      header = array_hash.first.keys
      arr_rows = array_hash.map do |csv_row|
        CSV::Row.new(header, csv_row.values_at(*header))
      end
    end
    CSV::Table.new(arr_rows).to_csv
  end

end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
eco-helpers-1.5.11 lib/eco/api/common/people/default_parsers/csv_parser.rb
eco-helpers-1.5.10 lib/eco/api/common/people/default_parsers/csv_parser.rb
eco-helpers-1.5.9 lib/eco/api/common/people/default_parsers/csv_parser.rb
eco-helpers-1.5.8 lib/eco/api/common/people/default_parsers/csv_parser.rb
eco-helpers-1.5.7 lib/eco/api/common/people/default_parsers/csv_parser.rb
eco-helpers-1.5.6 lib/eco/api/common/people/default_parsers/csv_parser.rb
eco-helpers-1.5.5 lib/eco/api/common/people/default_parsers/csv_parser.rb
eco-helpers-1.5.4 lib/eco/api/common/people/default_parsers/csv_parser.rb
eco-helpers-1.5.3 lib/eco/api/common/people/default_parsers/csv_parser.rb
eco-helpers-1.5.2 lib/eco/api/common/people/default_parsers/csv_parser.rb