Class: Yoda::Store::Registry::Index::ComposerWrapper

Inherits:
Object
  • Object
show all
Extended by:
Forwardable
Includes:
MissingDelegatable
Defined in:
lib/yoda/store/registry/index.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from MissingDelegatable

#delegate_missing_target, included, #method_missing, #respond_to_missing?

Constructor Details

#initialize(index:, composer:) ⇒ ComposerWrapper

Returns a new instance of ComposerWrapper.

Parameters:



21
22
23
24
25
26
# File 'lib/yoda/store/registry/index.rb', line 21

def initialize(index:, composer:)
  fail TypeError, "index must be an instance of Registry::Index but #{index}" unless index.is_a?(Registry::Index)
  fail TypeError, "composer must be an instance of Registry::Composer but #{composer}" unless composer.is_a?(Registry::Composer)
  @index = index
  @composer = composer
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method in the class Yoda::MissingDelegatable

Instance Attribute Details

#composer ⇒ Registry::Composer (readonly)

Returns:



17
18
19
# File 'lib/yoda/store/registry/index.rb', line 17

def composer
  @composer
end

#index ⇒ Registry::Index (readonly)

Returns:



14
15
16
# File 'lib/yoda/store/registry/index.rb', line 14

def index
  @index
end

Instance Method Details

#add_registry(registry) ⇒ Object



35
36
37
38
39
40
41
# File 'lib/yoda/store/registry/index.rb', line 35

def add_registry(registry)
  if old_registry = composer.get_registry(registry.id)
    index.remove_registry(old_registry)
  end
  composer.add_registry(registry)
  index.add_registry(registry)
end

#get(address, registry_ids: nil) ⇒ Objects::Addressable

Parameters:

  • address (String, Symbol)
  • registry_ids (Array<String, Symbol>, nil) (defaults to: nil) —

    if given, search object only from the specified registries.

Returns:



31
32
33
# File 'lib/yoda/store/registry/index.rb', line 31

def get(address, registry_ids: nil)
  composer.get(address, registry_ids: index.get(address, registry_ids: registry_ids))
end

#items ⇒ Enumerator<Object>

Returns:

  • (Enumerator<Object>)


53
54
55
56
57
58
59
60
61
62
63
64
# File 'lib/yoda/store/registry/index.rb', line 53

def items
  Enumerator.new do |y|
    keys.each do |key|
      value = get(key)
      if value
        y << value
      else
        Logger.warn("Not found value in registry for the key: #{key}")
      end
    end
  end
end

#keys ⇒ Object



48
49
50
# File 'lib/yoda/store/registry/index.rb', line 48

def keys
  index.keys
end

#remove_registry(registry) ⇒ Object



43
44
45
46
# File 'lib/yoda/store/registry/index.rb', line 43

def remove_registry(registry)
  composer.remove_registry(registry)
  index.remove_registry(registry)
end