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