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