class ObjectMapper

Constants

VERSION

Public Class Methods

new(mapping) click to toggle source
# File lib/object_mapper.rb, line 4
def initialize(mapping)
  @mapping = mapping.dup
  @mapping.default = {}
end

Public Instance Methods

convert(result, to: Hash) click to toggle source
# 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