module Moneta::Api::DataMapper
Public Class Methods
included(base)
click to toggle source
# File lib/moneta/api/data_mapper.rb, line 4 def self.included(base) base.extend ClassMethods end
Public Instance Methods
fill(data)
click to toggle source
# File lib/moneta/api/data_mapper.rb, line 43 def fill(data) properties.each do |property, type| if data.has_key?(property) value = data[property] property_value = type.nil? ? value : build_complex_value(type, value) instance_variable_set("@#{ property }", property_value) end end self end
to_hash()
click to toggle source
# File lib/moneta/api/data_mapper.rb, line 55 def to_hash properties.each_with_object({}) do |(property, _), hash| value = send(property) unless value.nil? hash[ property.to_s.camelize(:lower) ] = to_hash_complex_value(value) end end end
Private Instance Methods
build_complex_value(type, value)
click to toggle source
# File lib/moneta/api/data_mapper.rb, line 66 def build_complex_value(type, value) value.kind_of?(Array) ? value.map { |v| type.build(v) } : type.build(value) end
to_hash_complex_value(value)
click to toggle source
# File lib/moneta/api/data_mapper.rb, line 72 def to_hash_complex_value(value) if value.kind_of?(Array) value.map(&:to_hash) elsif value.respond_to?(:to_hash) value.to_hash else value end end