Sha256: 622827094064fe786a37163883830c0a5cb62237435faac0495019f9cd1d28d2

Contents?: true

Size: 807 Bytes

Versions: 1

Compression:

Stored size: 807 Bytes

Contents

# coding: utf-8

module Confuse
  class Config
    def initialize(definition, source)
      @definition = definition
      @source = source
    end

    def respond_to?(name)
      @definition.defines?(name) || super
    end

    def method_missing(name, *_args)
      self[name] if respond_to?(name)
    end

    def [](name)
      namespace, key = @definition.namespace_and_key(name)
      lookup(namespace, key)
    end

    def lookup(namespace, key)
      @source[namespace, key] || @definition.default(namespace, key)
    end

    # check items have a value. Will raise Undefined error if a required item
    # has no value.
    def check
      @definition.namespaces.each do |(namespace, ns)|
        ns.items.each do |key, _|
          lookup(namespace, key)
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
confuse-1.0.0 lib/confuse/config.rb