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