Module: Registry::ClassMethods
- Defined in:
- lib/registry.rb
Instance Attribute Summary collapse
-
#registry_key ⇒ Object
readonly
Returns the value of attribute registry_key.
-
#registry_keys ⇒ Object
readonly
Returns the value of attribute registry_keys.
Instance Method Summary collapse
- #[](key) ⇒ Object
- #lookup(key) ⇒ Object
- #register(*args) ⇒ Object
- #registered?(key) ⇒ Boolean
- #registries ⇒ Object
- #registry(name = nil) ⇒ Object
- #registry_name(name = nil) ⇒ Object
- #unregister(obj = self) ⇒ Object
Instance Attribute Details
#registry_key ⇒ Object (readonly)
Returns the value of attribute registry_key.
78 79 80 |
# File 'lib/registry.rb', line 78 def registry_key @registry_key end |
#registry_keys ⇒ Object (readonly)
Returns the value of attribute registry_keys.
78 79 80 |
# File 'lib/registry.rb', line 78 def registry_keys @registry_keys end |
Instance Method Details
#[](key) ⇒ Object
105 106 107 |
# File 'lib/registry.rb', line 105 def [](key) registry[key && key.to_sym] || fail(MSGS[:unknown] % [key, registry.keys.sort]) end |
#lookup(key) ⇒ Object
101 102 103 |
# File 'lib/registry.rb', line 101 def lookup(key) registered?(key) ? self[key] : registries[key] end |
#register(*args) ⇒ Object
80 81 82 83 84 85 86 87 88 89 |
# File 'lib/registry.rb', line 80 def register(*args) obj = !(args.last.is_a?(Symbol) || args.last.is_a?(String)) ? args.pop : self keys = args.map(&:to_sym) obj.instance_variable_set(:@registry_keys, keys) keys.reverse.each do |key| obj.instance_variable_set(:@registry_key, key) registry[key] = obj end self end |
#registered?(key) ⇒ Boolean
97 98 99 |
# File 'lib/registry.rb', line 97 def registered?(key) registry.key?(key && key.to_sym) end |
#registries ⇒ Object
117 118 119 |
# File 'lib/registry.rb', line 117 def registries @registries ||= superclass.registries end |
#registry(name = nil) ⇒ Object
109 110 111 |
# File 'lib/registry.rb', line 109 def registry(name = nil) @registry ||= registries.registry(registry_name(name)) end |
#registry_name(name = nil) ⇒ Object
113 114 115 |
# File 'lib/registry.rb', line 113 def registry_name(name = nil) name.nil? ? @registry_name ||= superclass.registry_name : @registry_name = name end |
#unregister(obj = self) ⇒ Object
91 92 93 94 95 |
# File 'lib/registry.rb', line 91 def unregister(obj = self) return unless obj.respond_to?(:registry_key) && obj.registry_key registry.delete(obj.registry_key) obj.remove_instance_variable(:@registry_key) end |