class Justdi::DefinitionStore
Store of entities definitions
Attributes
Public Class Methods
Class for stores generation @return [Class<Hash>]
# File lib/justdi/definition_store.rb, line 9 def general_store @general_store ||= Hash end
Class for register handlers generation @return [Class<Justdi::RegisterHandler>]
# File lib/justdi/definition_store.rb, line 15 def register_handler @register_handler ||= Justdi::RegisterHandler end
Public Instance Methods
Short getting syntax @param token [String, Symbol, Numeric, Class] @return [*]
# File lib/justdi/definition_store.rb, line 78 def [](token) get(token) end
Short definition syntax @param token [String, Symbol, Numeric, Class] @param definition [Hash]
# File lib/justdi/definition_store.rb, line 51 def []=(token, definition) set(token, **definition) end
Return all definitions @return [Hash]
# File lib/justdi/definition_store.rb, line 91 def all store.clone.freeze end
Iterates over existing values
@yield [token, definition]
# File lib/justdi/definition_store.rb, line 98 def each store.each { |(key, value)| yield key, value } end
Store is empty @return [Boolean]
# File lib/justdi/definition_store.rb, line 63 def empty? store.empty? end
Load dependency
@param token [String, Symbol, Numeric, Class] @return [*]
# File lib/justdi/definition_store.rb, line 71 def get(token) store[token] end
Check existence of dependency @return [Boolean]
# File lib/justdi/definition_store.rb, line 57 def has?(token) store.key? token end
Merge definition stores
@param def_store [DefinitionStore]
# File lib/justdi/definition_store.rb, line 85 def merge(def_store) @store = store.merge def_store.all end
Register definition declaration
@example Register a static value
"container.register(:example).use_value(42)"
@param token [String, Symbol, Numeric, Class] @return [Justdi::RegisterHandler]
# File lib/justdi/definition_store.rb, line 34 def register(token) self.class.register_handler.new { |value| store[token] = value } end
Register any dependency declaration manually
@param token [String, Symbol, Numeric, Class] @param definition [Hash] @option definition [Symbol] :type @option definition [*] :value
# File lib/justdi/definition_store.rb, line 44 def set(token, **definition) store[token] = Justdi::Definition.new(**definition) end
Protected Instance Methods
Definition
store @return [Hash]
# File lib/justdi/definition_store.rb, line 106 def store @store ||= self.class.general_store.new end