Class: Accord::AdapterRegistry
- Inherits:
-
BaseRegistry
- Object
- BaseRegistry
- Accord::AdapterRegistry
- Defined in:
- lib/accord/adapter_registry.rb
Class Method Summary collapse
Instance Method Summary collapse
- #all(options = {}) ⇒ Object
- #first(options = {}) ⇒ Object
- #get(objects, provided, *args) ⇒ Object
- #lookup(required, provided, *args) ⇒ Object
- #lookup_all(required, provided) ⇒ Object
- #register(required, provided, name = '', &value) ⇒ Object
- #unregister(required, provided, name, value = nil) ⇒ Object
Methods inherited from BaseRegistry
Class Method Details
.lookup_class ⇒ Object
26 27 28 |
# File 'lib/accord/adapter_registry.rb', line 26 def self.lookup_class AdapterLookup end |
Instance Method Details
#all(options = {}) ⇒ Object
58 59 60 61 62 |
# File 'lib/accord/adapter_registry.rb', line 58 def all(={}) required = normalize_interfaces([:required] || [nil]) provided = [:provided] || Interface registrations.by_order(required.size).partial(required, provided) end |
#first(options = {}) ⇒ Object
51 52 53 54 55 56 |
# File 'lib/accord/adapter_registry.rb', line 51 def first(={}) required = normalize_interfaces([:required] || [nil]) provided = [:provided] || Interface name = [:name] || '' registrations.by_order(required.size)[[required, provided, name]] end |
#get(objects, provided, *args) ⇒ Object
81 82 83 84 85 86 87 88 |
# File 'lib/accord/adapter_registry.rb', line 81 def get(objects, provided, *args) = args.last.is_a?(Hash) ? args.pop : {} name = args.last || '' default = .delete(:default) factory = lookup(map_provided_by(objects), provided, name, ) return (factory.call(*objects) || default) if factory default end |
#lookup(required, provided, *args) ⇒ Object
64 65 66 67 68 69 70 71 72 |
# File 'lib/accord/adapter_registry.rb', line 64 def lookup(required, provided, *args) required = normalize_interfaces(required || [nil]) provided ||= Interface = args.last.is_a?(Hash) ? args.pop : {} name = args.last || '' default = .delete(:default) lookup = registrations.by_order(required.size) lookup.first(required, provided, name) || default end |
#lookup_all(required, provided) ⇒ Object
74 75 76 77 78 79 |
# File 'lib/accord/adapter_registry.rb', line 74 def lookup_all(required, provided) required = normalize_interfaces(required || [nil]) provided ||= Interface lookup = registrations.by_order(required.size) lookup.all(required, provided) end |
#register(required, provided, name = '', &value) ⇒ Object
30 31 32 33 34 35 |
# File 'lib/accord/adapter_registry.rb', line 30 def register(required, provided, name='', &value) raise ArgumentError, "cannot register without a block" unless value required = normalize_interfaces(required || [nil]) provided ||= Interface registrations.by_order(required.size)[[required, provided, name]] = value end |
#unregister(required, provided, name, value = nil) ⇒ Object
37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/accord/adapter_registry.rb', line 37 def unregister(required, provided, name, value=nil) required = normalize_interfaces(required || [nil]) provided ||= Interface lookup = registrations.by_order(required.size) key = [required, provided, name] old = lookup[key] return if old.nil? return if !value.nil? && !old.equal?(value) lookup.delete(key) end |