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