class Justdi::DefinitionStore

Store of entities definitions

Attributes

general_store[W]
register_handler[W]
use_general_store[W]
use_register_handler[W]

Public Class Methods

general_store() click to toggle source

Class for stores generation @return [Class<Hash>]

# File lib/justdi/definition_store.rb, line 9
def general_store
  @general_store ||= Hash
end
register_handler() click to toggle source

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

[](token) click to toggle source

Short getting syntax @param token [String, Symbol, Numeric, Class] @return [*]

# File lib/justdi/definition_store.rb, line 78
def [](token)
  get(token)
end
[]=(token, definition) click to toggle source

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
all() click to toggle source

Return all definitions @return [Hash]

# File lib/justdi/definition_store.rb, line 91
def all
  store.clone.freeze
end
each() { |key, value| ... } click to toggle source

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
empty?() click to toggle source

Store is empty @return [Boolean]

# File lib/justdi/definition_store.rb, line 63
def empty?
  store.empty?
end
get(token) click to toggle source

Load dependency

@param token [String, Symbol, Numeric, Class] @return [*]

# File lib/justdi/definition_store.rb, line 71
def get(token)
  store[token]
end
has?(token) click to toggle source

Check existence of dependency @return [Boolean]

# File lib/justdi/definition_store.rb, line 57
def has?(token)
  store.key? token
end
merge(def_store) click to toggle source

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(token) click to toggle source

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
set(token, **definition) click to toggle source

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

store() click to toggle source

Definition store @return [Hash]

# File lib/justdi/definition_store.rb, line 106
def store
  @store ||= self.class.general_store.new
end