class Moltrio::Config::AdapterChain

Attributes

adapters[R]

Public Class Methods

new(adapters) click to toggle source
# File lib/moltrio/config/adapter_chain.rb, line 7
def initialize(adapters)
  @adapters = Hamster.list(*adapters)
end

Public Instance Methods

[](key) click to toggle source
# File lib/moltrio/config/adapter_chain.rb, line 19
def [](key)
  if adapter = adapter_for_key(key)
    adapter[key]
  end
end
[]=(key, value) click to toggle source
# File lib/moltrio/config/adapter_chain.rb, line 25
def []=(key, value)
  first_adapter[key] = value
end
available_namespaces() click to toggle source
# File lib/moltrio/config/adapter_chain.rb, line 37
def available_namespaces
  adapters.reduce(Hamster.set) { |set, adapter|
    set.merge(adapter.available_namespaces)
  }
end
has_key?(key) click to toggle source
# File lib/moltrio/config/adapter_chain.rb, line 29
def has_key?(key)
  !!adapter_for_key(key)
end
missing_namespace?() click to toggle source
# File lib/moltrio/config/adapter_chain.rb, line 33
def missing_namespace?
  adapters.any?(&:missing_namespace?)
end
on_namespace(namespace) click to toggle source
# File lib/moltrio/config/adapter_chain.rb, line 11
def on_namespace(namespace)
  adapters_on_namespace = adapters.map { |adapter|
    adapter.on_namespace(namespace)
  }

  self.class.new(adapters_on_namespace)
end

Private Instance Methods

adapter_for_key(key) click to toggle source
# File lib/moltrio/config/adapter_chain.rb, line 46
def adapter_for_key(key)
  adapters.detect { |adapter| adapter.has_key?(key) }
end
first_adapter() click to toggle source
# File lib/moltrio/config/adapter_chain.rb, line 50
def first_adapter
  @adapters.first
end