Class: Justdi::DefinitionStore

Inherits:
Object
  • Object
show all
Defined in:
lib/justdi/definition_store.rb

Overview

Store of entities definitions

Class Attribute Summary collapse

Instance Method Summary collapse

Class Attribute Details

.general_store ⇒ Class<Hash>

Class for stores generation

Returns:

  • (Class<Hash>)


9
10
11
# File 'lib/justdi/definition_store.rb', line 9

def general_store
  @general_store ||= Hash
end

.register_handler ⇒ Class<Justdi::RegisterHandler>

Class for register handlers generation

Returns:



15
16
17
# File 'lib/justdi/definition_store.rb', line 15

def register_handler
  @register_handler ||= Justdi::RegisterHandler
end

Instance Method Details

#[](token) ⇒ *

Short getting syntax

Parameters:

  • token (String, Symbol, Numeric, Class)

Returns:

  • (*)


78
79
80
# File 'lib/justdi/definition_store.rb', line 78

def [](token)
  get(token)
end

#[]=(token, definition) ⇒ Object

Short definition syntax

Parameters:

  • token (String, Symbol, Numeric, Class)
  • definition (Hash)


51
52
53
# File 'lib/justdi/definition_store.rb', line 51

def []=(token, definition)
  set(token, **definition)
end

#all ⇒ Hash

Return all definitions

Returns:

  • (Hash)


91
92
93
# File 'lib/justdi/definition_store.rb', line 91

def all
  store.clone.freeze
end

#each {|token, definition| ... } ⇒ Object

Iterates over existing values

Yields:

  • (token, definition)


98
99
100
# File 'lib/justdi/definition_store.rb', line 98

def each
  store.each { |(key, value)| yield key, value }
end

#empty? ⇒ Boolean

Store is empty

Returns:

  • (Boolean)


63
64
65
# File 'lib/justdi/definition_store.rb', line 63

def empty?
  store.empty?
end

#get(token) ⇒ *

Load dependency

Parameters:

  • token (String, Symbol, Numeric, Class)

Returns:

  • (*)


71
72
73
# File 'lib/justdi/definition_store.rb', line 71

def get(token)
  store[token]
end

#has?(token) ⇒ Boolean

Check existence of dependency

Returns:

  • (Boolean)


57
58
59
# File 'lib/justdi/definition_store.rb', line 57

def has?(token)
  store.key? token
end

#merge(def_store) ⇒ Object

Merge definition stores

Parameters:



85
86
87
# File 'lib/justdi/definition_store.rb', line 85

def merge(def_store)
  @store = store.merge def_store.all
end

#register(token) ⇒ Justdi::RegisterHandler

Register definition declaration

Examples:

Register a static value

"container.register(:example).use_value(42)"

Parameters:

  • token (String, Symbol, Numeric, Class)

Returns:



34
35
36
# File 'lib/justdi/definition_store.rb', line 34

def register(token)
  self.class.register_handler.new { |value| store[token] = value }
end

#set(token, **definition) ⇒ Object

Register any dependency declaration manually

Parameters:

  • token (String, Symbol, Numeric, Class)
  • definition (Hash)

Options Hash (**definition):

  • :type (Symbol)
  • :value (*)


44
45
46
# File 'lib/justdi/definition_store.rb', line 44

def set(token, **definition)
  store[token] = Justdi::Definition.new(**definition)
end