Class: AMA::Entity::Mapper::Type::Registry
- Inherits:
-
Object
- Object
- AMA::Entity::Mapper::Type::Registry
show all
- Includes:
- Mixin::Errors
- Defined in:
- lib/ama-entity-mapper/type/registry.rb
Overview
Holds all registered types
Instance Attribute Summary collapse
Instance Method Summary
collapse
#compliance_error, #mapping_error, #raise_if_internal, #validation_error
Constructor Details
Returns a new instance of Registry.
24
25
26
|
# File 'lib/ama-entity-mapper/type/registry.rb', line 24
def initialize
@types = {}
end
|
Instance Attribute Details
#types ⇒ Object
Returns the value of attribute types.
22
23
24
|
# File 'lib/ama-entity-mapper/type/registry.rb', line 22
def types
@types
end
|
Instance Method Details
#[](klass) ⇒ Object
44
45
46
|
# File 'lib/ama-entity-mapper/type/registry.rb', line 44
def [](klass)
@types[klass]
end
|
71
72
73
74
|
# File 'lib/ama-entity-mapper/type/registry.rb', line 71
def find(klass)
candidates = select(klass)
candidates.empty? ? nil : candidates.first
end
|
78
79
80
81
82
83
|
# File 'lib/ama-entity-mapper/type/registry.rb', line 78
def find!(klass)
candidate = find(klass)
return candidate if candidate
message = "Could not find any registered type for class #{klass}"
compliance_error(message)
end
|
#key?(klass) ⇒ Boolean
Also known as:
registered?
54
55
56
|
# File 'lib/ama-entity-mapper/type/registry.rb', line 54
def key?(klass)
@types.key?(klass)
end
|
#register(type) ⇒ Object
49
50
51
|
# File 'lib/ama-entity-mapper/type/registry.rb', line 49
def register(type)
@types[type.type] = type
end
|
#resolvable?(klass) ⇒ TrueClass, FalseClass
87
88
89
|
# File 'lib/ama-entity-mapper/type/registry.rb', line 87
def resolvable?(klass)
!select(klass).empty?
end
|
62
63
64
65
66
67
|
# File 'lib/ama-entity-mapper/type/registry.rb', line 62
def select(klass)
types = class_hierarchy(klass).map do |entry|
@types[entry]
end
types.reject(&:nil?)
end
|
29
30
31
32
33
34
35
36
37
38
39
40
41
|
# File 'lib/ama-entity-mapper/type/registry.rb', line 29
def with_default_types
register(BuiltIn::EnumerableType::INSTANCE)
register(BuiltIn::ArrayType::INSTANCE)
register(BuiltIn::HashType::INSTANCE)
register(BuiltIn::SetType::INSTANCE)
register(BuiltIn::HashTupleType::INSTANCE)
register(BuiltIn::RationalType::INSTANCE)
register(BuiltIn::DateTimeType::INSTANCE)
BuiltIn::PrimitiveType::ALL.each do |type|
register(type)
end
self
end
|