class Confuse::Config

Public Class Methods

new(definition, source) click to toggle source
# File lib/confuse/config.rb, line 5
def initialize(definition, source)
  @definition = definition
  @source = source
end

Public Instance Methods

[](name) click to toggle source
# File lib/confuse/config.rb, line 18
def [](name)
  namespace, key = @definition.namespace_and_key(name)
  lookup(namespace, key)
end
check() click to toggle source

check items have a value. Will raise Undefined error if a required item has no value.

# File lib/confuse/config.rb, line 35
def check
  @definition.namespaces.each do |(namespace, ns)|
    ns.items.each do |key, _|
      lookup(namespace, key)
    end
  end
end
lookup(namespace, key) click to toggle source
# File lib/confuse/config.rb, line 23
def lookup(namespace, key)
  unless (item = @definition.find_item(namespace, key))
    raise Errors::Undefined.new(key)
  end

  value = @source[namespace, key] || item.default(self)

  item.convert(value)
end
method_missing(name, *_args) click to toggle source
# File lib/confuse/config.rb, line 14
def method_missing(name, *_args)
  self[name] if respond_to?(name)
end
respond_to?(name) click to toggle source
Calls superclass method
# File lib/confuse/config.rb, line 10
def respond_to?(name)
  @definition.defines?(name) || super
end
to_hash() click to toggle source
# File lib/confuse/config.rb, line 43
def to_hash
  @definition.to_hash.reduce({}) do |a, (k, v)|
    value_added = v.merge(:value => self[k])
    a.merge({ k => value_added })
  end
end