Class: Justdi::Container
- Inherits:
-
Object
- Object
- Justdi::Container
- Extended by:
- Forwardable
- Defined in:
- lib/justdi/container.rb
Overview
Generic container
Class Attribute Summary collapse
-
.resolver ⇒ Module<Justdi::Resolver>
readonly
Resolver module.
-
.store ⇒ Class<Justdi::DefinitionStore>
readonly
Class for generation.
Instance Method Summary collapse
-
#[](token) ⇒ *
Short getting syntax.
-
#get(token) ⇒ *
Load and resolve dependency.
-
#import_store(def_store, overwrite: true) ⇒ Object
Import definition store.
-
#merge(*containers) ⇒ Object
Merge containers.
-
#resolve(klass) ⇒ T
Resolve dependency.
Class Attribute Details
.resolver ⇒ Module<Justdi::Resolver>
Resolver module
15 16 17 |
# File 'lib/justdi/container.rb', line 15 def resolver @resolver ||= Justdi::Resolver end |
.store ⇒ Class<Justdi::DefinitionStore>
Class for generation
21 22 23 |
# File 'lib/justdi/container.rb', line 21 def store @store ||= Justdi::DefinitionStore end |
Instance Method Details
#[](token) ⇒ *
Short getting syntax
46 47 48 |
# File 'lib/justdi/container.rb', line 46 def [](token) get(token) end |
#get(token) ⇒ *
Load and resolve dependency
37 38 39 40 41 |
# File 'lib/justdi/container.rb', line 37 def get(token) store.get(token)&.resolve do |definition| self.class.resolver.call definition, self end end |
#import_store(def_store, overwrite: true) ⇒ Object
Import definition store
69 70 71 72 73 74 75 |
# File 'lib/justdi/container.rb', line 69 def import_store(def_store, overwrite: true) return store.merge(def_store) if overwrite def_store.each do |key, value| store.set(key, value) unless store.has?(key) end end |
#merge(*containers) ⇒ Object
Merge containers
61 62 63 |
# File 'lib/justdi/container.rb', line 61 def merge(*containers) containers.each { |container| store.merge container.store } end |
#resolve(klass) ⇒ T
Resolve dependency
54 55 56 |
# File 'lib/justdi/container.rb', line 54 def resolve(klass) self.class.resolver.class_value(klass, self) end |