class Justdi::Container
Generic container
Attributes
resolver[W]
store[W]
use_resolver[W]
use_store[W]
Public Class Methods
resolver()
click to toggle source
Resolver
module @return [Module<Justdi::Resolver>]
# File lib/justdi/container.rb, line 15 def resolver @resolver ||= Justdi::Resolver end
store()
click to toggle source
Class for generation @return [Class<Justdi::DefinitionStore>]
# File lib/justdi/container.rb, line 21 def store @store ||= Justdi::DefinitionStore end
Public Instance Methods
[](token)
click to toggle source
Short getting syntax @param token [String, Symbol, Numeric, Class] @return [*]
# File lib/justdi/container.rb, line 46 def [](token) get(token) end
get(token)
click to toggle source
Load and resolve dependency
@param token [String, Symbol, Numeric, Class] @return [*]
# 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)
click to toggle source
Import definition store
@param def_store [Justdi::DefinitionStore] @param overwrite [Boolean]
# 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)
click to toggle source
Merge containers
@param containers [Array<Justdi::Container>]
# File lib/justdi/container.rb, line 61 def merge(*containers) containers.each { |container| store.merge container.store } end
resolve(klass)
click to toggle source
Resolve dependency
@param klass [Class<T>] @return [T]
# File lib/justdi/container.rb, line 54 def resolve(klass) self.class.resolver.class_value(klass, self) end
Protected Instance Methods
store()
click to toggle source
Definition
store @return [Justdi::DefinitionStore]
# File lib/justdi/container.rb, line 81 def store @store ||= self.class.store.new end