Module: SimpleCsvImporter

Defined in:
lib/simple_csv_importer.rb,
lib/simple_csv_importer/version.rb

Defined Under Namespace

Modules: ClassMethods

Constant Summary collapse

VERSION =
'0.0.1'

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(base) ⇒ Object



5
6
7
8
9
10
11
12
13
14
# File 'lib/simple_csv_importer.rb', line 5

def self.included(base)
  base.class_eval do
    @target_klass = base.to_s.sub(/Importer$/, '')
    @rules = []
    class << self
      attr_reader :rules, :target_klass
    end
  end
  base.extend ClassMethods
end

Instance Method Details

#load(csv_text) ⇒ Array

Parameters:

  • csv_text (String)

Returns:

  • (Array)


43
44
45
46
47
48
49
50
51
52
53
54
# File 'lib/simple_csv_importer.rb', line 43

def load(csv_text)
  csv = CSV.parse(csv_text, headers: true)

  target_class = Object.const_get(self.class.target_klass)
  csv.map do |row|
    target = target_class.new
    self.class.rules.each do |attr_name, processor|
      target.public_send(:"#{attr_name}=", processor.call(row))
    end
    target
  end
end