module AMA::Entity::Mapper::DSL::ClassMethods

Module providing DSL methods for entity class

Public Instance Methods

attribute(name, *types, **options) click to toggle source

@param [String, Symbol] name @param [Array<AMA::Entity::Mapper::Type] types List of possible

attribute types

@param [Hash] options Attribute options: @option options [TrueClass, FalseClass] virtual @option options [TrueClass, FalseClass] sensitive @option options [TrueClass, FalseClass] nullable @option options [Object] default @option options [Array] values @return [AMA::Entity::Mapper::Type::Attribute]

# File lib/ama-entity-mapper/dsl/class_methods.rb, line 48
def attribute(name, *types, **options)
  types = types.map(&method(:resolve_type))
  types = [Type::Any::INSTANCE] if types.empty?
  bound_type.attribute!(name, *types, **options)
  define_method(name) do
    instance_variable_get("@#{name}")
  end
  define_method("#{name}=") do |value|
    instance_variable_set("@#{name}", value)
  end
end
bound_type() click to toggle source

@return [AMA::Entity::Mapper::Type]

# File lib/ama-entity-mapper/dsl/class_methods.rb, line 34
def bound_type
  engine[self]
end
engine() click to toggle source
# File lib/ama-entity-mapper/dsl/class_methods.rb, line 28
def engine
  self.engine = Mapper.engine unless @engine
  @engine
end
engine=(engine) click to toggle source
# File lib/ama-entity-mapper/dsl/class_methods.rb, line 22
def engine=(engine)
  @engine = engine
  engine.register(self)
  engine
end
parameter(id) click to toggle source

Returns parameter reference

@param [String, Symbol] id @return [AMA::Entity::Mapper::Type::Parameter]

# File lib/ama-entity-mapper/dsl/class_methods.rb, line 64
def parameter(id)
  bound_type.parameter!(id)
end

Private Instance Methods

resolve_type(type) click to toggle source
# File lib/ama-entity-mapper/dsl/class_methods.rb, line 90
def resolve_type(type)
  return Type::Any::INSTANCE if type.nil? || type == :*
  return parameter(type) if type.is_a?(Symbol) || type.is_a?(String)
  return type if type.is_a?(Type::Parameter)
  engine.resolve(type)
end