Class: Bluepine::Registry
- Inherits:
-
Object
- Object
- Bluepine::Registry
- Includes:
- Assertions
- Defined in:
- lib/bluepine/registry.rb
Overview
A generic registry
Constant Summary collapse
- KeyError =
Bluepine::Error.create("Object %s already exists")
Constants included from Assertions
Assertions::Error, Assertions::SubsetError
Instance Method Summary collapse
-
#create(id, *args, &block) ⇒ Object
Creates new object by using a Proc from #new.
-
#get(id) ⇒ Object
Retrieves registered Object by key.
-
#initialize(objects = [], error: KeyError, &block) ⇒ Registry
constructor
A new instance of Registry.
- #key?(id) ⇒ Boolean
- #keys ⇒ Object
-
#register(id, object, override: false) ⇒ Object
Registers new object by id.
Methods included from Assertions
#assert, #assert_in, #assert_kind_of, #assert_not, #assert_subset_of, included
Constructor Details
#initialize(objects = [], error: KeyError, &block) ⇒ Registry
Returns a new instance of Registry.
24 25 26 27 28 29 30 |
# File 'lib/bluepine/registry.rb', line 24 def initialize(objects = [], error: KeyError, &block) assert_kind_of Proc, block @objects = normalize objects @factory = block @error = error end |
Instance Method Details
#create(id, *args, &block) ⇒ Object
Creates new object by using a Proc from #new
50 51 52 |
# File 'lib/bluepine/registry.rb', line 50 def create(id, *args, &block) instance_exec(id, *args, block, &@factory) end |
#get(id) ⇒ Object
Retrieves registered Object by key
55 56 57 58 59 |
# File 'lib/bluepine/registry.rb', line 55 def get(id) raise @error, id unless key?(id) @objects[id.to_sym] end |
#key?(id) ⇒ Boolean
61 62 63 |
# File 'lib/bluepine/registry.rb', line 61 def key?(id) @objects.key? id end |
#keys ⇒ Object
65 66 67 |
# File 'lib/bluepine/registry.rb', line 65 def keys @objects.keys end |
#register(id, object, override: false) ⇒ Object
Registers new object by id
37 38 39 40 41 42 43 |
# File 'lib/bluepine/registry.rb', line 37 def register(id, object, override: false) if key?(id) && !override raise @error, id end @objects[id.to_sym] = object end |