Sha256: 0cb6bdbe34aebd8fbaa247d70fed450e115dc3727f329114661fe29673fc67e2

Contents?: true

Size: 648 Bytes

Versions: 2

Compression:

Stored size: 648 Bytes

Contents

module TinOpener
  module DataFileProcessors
    class CsvProcessor < TinOpener::DataFileProcessor
      def initialize(args = {})
        super
        @separator = args.fetch(:separator) { ';' }
      end

      def headers
        @headers ||= rows.first.try do |row|
          row.transform_values do |value|
            value ? value.class.name : 'String'
          end
        end
      end

      def rows
        @csv_data ||= CSV.parse(@file, col_sep: @separator, headers: true).map do |row|
            row.to_hash.transform_keys{ |a| a.gsub(/\s+/, ' ').strip.gsub(/\s/, '_').underscore.to_sym }
          end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
tin_opener-0.0.3 lib/tin_opener/data_file_processors/csv_processor.rb
tin_opener-0.0.2 lib/tin_opener/data_file_processors/csv_processor.rb