class StrictKonf

Constants

VERSION

Public Class Methods

new(source, root, required_keys) click to toggle source
Calls superclass method
# File lib/strict_konf.rb, line 8
def initialize(source, root, required_keys)
  super(source, root)
  @required_keys = required_keys

  _validate_required_keys
  _validate_provided_keys
end

Public Instance Methods

method_missing(name, *args, &block) click to toggle source
Calls superclass method
# File lib/strict_konf.rb, line 16
def method_missing(name, *args, &block)
  result = super
  if result.is_a? Konf
    StrictKonf.new(result, nil, _normalize_keys.fetch(name))
  else
    result
  end
end

Private Instance Methods

_normalize_keys() click to toggle source
# File lib/strict_konf.rb, line 50
def _normalize_keys
  @required_keys.each_with_object({}) {|key, hash|
    if key.is_a? Hash
      hash.merge!(key)
    elsif key.is_a? Array
      hash[key[0]] = key[1]
    else
      hash[key] = true
    end
  }
end
_validate_provided_keys() click to toggle source
# File lib/strict_konf.rb, line 38
def _validate_provided_keys
  required = @required_keys
  required = required.keys if keys.is_a? Hash
  required = required.map { |key| key.is_a?(Hash) ? key.keys : key }
  required = required.flatten.map(&:to_s)

  extra = keys - required
  if extra.any?
    raise UnknownKeys, "Unknown keys in config: #{extra}"
  end
end
_validate_required_keys() click to toggle source
# File lib/strict_konf.rb, line 27
def _validate_required_keys
  keys = @required_keys
  keys = keys.keys if keys.is_a? Hash

  keys.each { |key|
    if key.is_a? Symbol
      public_send(key.to_s)
    end
  }
end