Sha256: 58d0322a0a1b159d09a55602428e6108b07514c3b74f088c1d71fe0432282421

Contents?: true

Size: 1.41 KB

Versions: 23

Compression:

Stored size: 1.41 KB

Contents

module Eco
  module API
    module Common
      module People
        class DefaultParsers
          class CSVParser < People::BaseParser

            def process
              @parsers.define_attribute(:csv, dependencies: @options) do |parser|
                parser.def_parser  do |data, deps|
                  arr_hash = []
                  CSV.parse(data, headers: true, skip_blanks: true).reject do |row|
                    values = row.to_hash.values
                    values.all?(&:nil?) || values.map(&:to_s).all?(&:empty?)
                  end.each do |row|
                    row_hash = row.headers.uniq.each_with_object({}) do |attr, hash|
                      value      = row[attr]
                      hash[attr] = value.to_s.empty?? nil : value
                    end
                    arr_hash.push(row_hash)
                  end
                  arr_hash
                end.def_serializer do |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
            end

          end
        end
      end
    end
  end
end

Version data entries

23 entries across 23 versions & 1 rubygems

Version Path
eco-helpers-1.5.1 lib/eco/api/common/people/default_parsers/csv_parser.rb
eco-helpers-1.5.0 lib/eco/api/common/people/default_parsers/csv_parser.rb
eco-helpers-1.4.2 lib/eco/api/common/people/default_parsers/csv_parser.rb
eco-helpers-1.3.19 lib/eco/api/common/people/default_parsers/csv_parser.rb
eco-helpers-1.4.1 lib/eco/api/common/people/default_parsers/csv_parser.rb
eco-helpers-1.4.0 lib/eco/api/common/people/default_parsers/csv_parser.rb
eco-helpers-1.3.18 lib/eco/api/common/people/default_parsers/csv_parser.rb
eco-helpers-1.3.17 lib/eco/api/common/people/default_parsers/csv_parser.rb
eco-helpers-1.3.16 lib/eco/api/common/people/default_parsers/csv_parser.rb
eco-helpers-1.3.15 lib/eco/api/common/people/default_parsers/csv_parser.rb
eco-helpers-1.3.14 lib/eco/api/common/people/default_parsers/csv_parser.rb
eco-helpers-1.3.13 lib/eco/api/common/people/default_parsers/csv_parser.rb
eco-helpers-1.3.12 lib/eco/api/common/people/default_parsers/csv_parser.rb
eco-helpers-1.3.11 lib/eco/api/common/people/default_parsers/csv_parser.rb
eco-helpers-1.3.10 lib/eco/api/common/people/default_parsers/csv_parser.rb
eco-helpers-1.3.9 lib/eco/api/common/people/default_parsers/csv_parser.rb
eco-helpers-1.3.8 lib/eco/api/common/people/default_parsers/csv_parser.rb
eco-helpers-1.3.7 lib/eco/api/common/people/default_parsers/csv_parser.rb
eco-helpers-1.3.6 lib/eco/api/common/people/default_parsers/csv_parser.rb
eco-helpers-1.3.5 lib/eco/api/common/people/default_parsers/csv_parser.rb