Class: ObjectMapper

Inherits:
Object
  • Object
show all
Defined in:
lib/object_mapper.rb,
lib/object_mapper/version.rb

Constant Summary collapse

VERSION =
"0.1.0"

Instance Method Summary collapse

Constructor Details

#initialize(mapping) ⇒ ObjectMapper

Returns a new instance of ObjectMapper.



4
5
6
7
# File 'lib/object_mapper.rb', line 4

def initialize(mapping)
  @mapping = mapping.dup
  @mapping.default = {}
end

Instance Method Details

#convert(result, to: Hash) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/object_mapper.rb', line 9

def convert(result, to: Hash)
  klass = to

  if result.is_a?(Array) && klass != Array
    result.map! {|element| convert(element, to: klass.first) }
  elsif result.is_a?(Hash) && klass != Hash
    result.each do |key, value|
      result[key] = convert(value, to: @mapping[klass][key] || value.class)
    end

    begin
      klass.new(result)
    rescue ArgumentError => e
      raise e, "#{e} (class: `#{klass}')", e.backtrace
    end
  else
    result
  end
end