Class: Hashcraft::Generic::Registry
- Inherits:
-
Object
- Object
- Hashcraft::Generic::Registry
- Extended by:
- Forwardable
- Includes:
- Singleton
- Defined in:
- lib/hashcraft/generic/registry.rb
Overview
A general data structure that can register and resolve objects by name. It also will act as a pass-thru if a non-string or non-symbol is passed through.
Direct Known Subclasses
Instance Method Summary collapse
-
#initialize(map = {}) ⇒ Registry
constructor
A new instance of Registry.
- #register(name, value) ⇒ Object
- #register_all(map) ⇒ Object
- #resolve(value) ⇒ Object
Constructor Details
#initialize(map = {}) ⇒ Registry
Returns a new instance of Registry.
26 27 28 29 30 31 32 |
# File 'lib/hashcraft/generic/registry.rb', line 26 def initialize(map = {}) @map = {} register_all(map) freeze end |
Instance Method Details
#register(name, value) ⇒ Object
40 41 42 43 44 |
# File 'lib/hashcraft/generic/registry.rb', line 40 def register(name, value) @map[name.to_s] = value self end |
#register_all(map) ⇒ Object
34 35 36 37 38 |
# File 'lib/hashcraft/generic/registry.rb', line 34 def register_all(map) (map || {}).each { |k, v| register(k, v) } self end |
#resolve(value) ⇒ Object
46 47 48 49 50 |
# File 'lib/hashcraft/generic/registry.rb', line 46 def resolve(value) return value unless lookup?(value) map[value.to_s] || raise(ArgumentError, "registration: #{value} not found") end |