Module: Riveter::AssociatedTypeRegistry::ClassMethods

Defined in:
lib/riveter/associated_type_registry.rb

Instance Method Summary collapse

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, options={})
  options = {
    :key => key_for(associated_type)
  }.merge(options)

  # prevent duplicate registrations
  type_list = container.registry[options[: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