module Moneta::Api::DataMapper::ClassMethods

Public Instance Methods

build(data) click to toggle source
# File lib/moneta/api/data_mapper.rb, line 21
def build(data)
  self.new.tap { |object| object.fill(data) }
end
property(name, type: nil, read_only: false) click to toggle source
# File lib/moneta/api/data_mapper.rb, line 9
def property(name, type: nil, read_only: false)
  generate_accessors(name, read_only)

  # Сохраняем свойста и перезаписываем instance метод
  current_properties = instance_variable_get('@properties') || {}
  properties = instance_variable_set('@properties',
    current_properties.merge(parents_properties).merge(name => type)
  )

  send(:define_method, :properties) { properties }
end

Private Instance Methods

generate_accessors(name, read_only) click to toggle source
# File lib/moneta/api/data_mapper.rb, line 37
def generate_accessors(name, read_only)
  attr_reader(name)
  attr_writer(name) unless read_only
end
parents_properties() click to toggle source
# File lib/moneta/api/data_mapper.rb, line 27
def parents_properties
  instance_variable_get('@parents_properties') ||
    instance_variable_set('@parents_properties', ancestors.each_with_object({}) do |klass, hash|
      if klass.name.match(/Moneta::Api::(Types|Requests|Responses)/)
        hash.merge!(klass.instance_variable_get('@properties') || {})
      end
    end
  )
end