class Honeybadger::Config::Mash
def get(key)
def get(key) k = key.to_sym return hash[k] if hash.has_key?(k) config.get(k) end
def getter?(method_name)
def getter?(method_name) key = key(method_name) KEYS.any? {|k| k == key } end
def initialize(config, prefix: nil, hash: {})
def initialize(config, prefix: nil, hash: {}) @config = config @prefix = prefix @hash = hash end
def key(method_name)
def key(method_name) parts = [prefix, method_name.to_s.chomp('=')] parts.compact! parts.join('.') end
def mash?(method)
def mash?(method) key = [prefix, method.to_s + '.'].compact.join('.') KEYS.any? {|k| k.start_with?(key) } end
def method_missing(method_name, *args, &block)
def method_missing(method_name, *args, &block) m = method_name.to_s if mash?(m) return Mash.new(config, prefix: key(m), hash: hash) elsif setter?(m) return hash.send(:[]=, key(m).to_sym, args[0]) elsif getter?(m) return get(key(m)) end super end
def respond_to_missing?(method_name, include_private = false)
def respond_to_missing?(method_name, include_private = false) true end
def setter?(method_name)
def setter?(method_name) return false unless method_name.to_s =~ /=\z/ key = key(method_name) KEYS.any? {|k| k == key } end
def to_hash
def to_hash hash.to_hash end