BathHacked/energy-sparks

View on GitHub
lib/energy_sparks/csv_loader.rb

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
require 'csv'
module EnergySparks
  class CsvLoader
    def self.default_options
      {
        headers: true,
        header_converters: :symbol,
        skip_blanks: true,
        converters: lambda {|f| f ? f.strip : nil}
      }
    end

    def self.from_text(csv, options = {})
      process(CSV.parse(csv, **default_options.merge(options)))
    end

    def self.process(rows)
      rows.reject {|row| row.fields.all?(&:nil?) }
    end
  end
end