Module: Riveter::AssociatedTypeRegistry::ClassMethods
- Defined in:
- lib/riveter/associated_type_registry.rb
Instance Method Summary collapse
- #key_for(type) ⇒ Object
- #register_type(type, associated_type, options = {}) ⇒ Object
- #resolve(type) ⇒ Object
- #resolve!(type) ⇒ Object
- #resolve_all(type) ⇒ Object
Instance Method Details
#key_for(type) ⇒ Object
19 20 21 |
# File 'lib/riveter/associated_type_registry.rb', line 19 def key_for(type) type.is_a?(Symbol) ? type : type.name.underscore.to_sym end |
#register_type(type, associated_type, options = {}) ⇒ Object
23 24 25 26 27 28 29 30 31 |
# File 'lib/riveter/associated_type_registry.rb', line 23 def register_type(type, associated_type, ={}) = { :key => key_for(associated_type) }.merge() # prevent duplicate registrations type_list = container.registry[[:key]] type_list << type unless type_list.include?(type) end |
#resolve(type) ⇒ Object
39 40 41 |
# File 'lib/riveter/associated_type_registry.rb', line 39 def resolve(type) self.resolve_all(type).first end |
#resolve!(type) ⇒ Object
33 34 35 36 37 |
# File 'lib/riveter/associated_type_registry.rb', line 33 def resolve!(type) registered = self.resolve(type) raise UnregisteredTypeError.new(type) unless registered registered end |
#resolve_all(type) ⇒ Object
43 44 45 |
# File 'lib/riveter/associated_type_registry.rb', line 43 def resolve_all(type) container.registry[key_for(type)] || [] end |