Module: CSVMapper::ClassMethods

Defined in:
lib/csvmapper.rb

Instance Method Summary collapse

Instance Method Details

#column(attr, *args, &block) ⇒ Object



39
40
41
42
43
44
45
46
47
# File 'lib/csvmapper.rb', line 39

def column(attr, *args, &block)
  attr = attr.to_s
  type = args.delete(([String, Float, Integer, Date, DateTime] & args).first) || String
  source = args.first || attr
  
  @_columns[attr] = Column.new(attr, source, type, block)
  
  create_accessor(attr)
end

#parse(contents, parser_opts = {}) ⇒ Object



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/csvmapper.rb', line 18

def parse(contents, parser_opts={})
  @_parser_options.merge!(parser_opts)
  
  instances = []
  parser = FasterCSV.new(contents, @_parser_options)
  
  parser.each do |line|
    instance = new
    
    @_columns.values.each do |column|
      raw_value = line[column[:source]]
      
      value = column_value(raw_value, column[:type], column[:conversion])
      
      instance.send("#{column.attr.to_s}=", value)
    end
    instances << instance
  end
  instances
end