class Hash

Public Instance Methods

deep_get(key, obj, found = nil) click to toggle source
# File lib/klient/hash_methods.rb, line 2
def deep_get(key, obj, found = nil)
  if obj.respond_to?(:key?) && obj.key?(key)
    return obj[key]
  elsif obj.respond_to?(:each)
    obj.find { |*a| found = deep_get(key, a.last) }
    return found
  end
end
deep_set(key, obj, value, found = nil) click to toggle source
# File lib/klient/hash_methods.rb, line 11
def deep_set(key, obj, value, found = nil)
  if obj.respond_to?(:key?) && obj.key?(key)
    obj[key] = value
    return value
  elsif obj.respond_to?(:each)
    obj.find { |*a| found = deep_set(key, a.last, value) }
    return found
  end
end
method_missing(mth, *args, &block) click to toggle source
# File lib/klient/hash_methods.rb, line 21
def method_missing(mth, *args, &block)
  m = mth.to_s

  if keys.include?(m)
    self[m]
  elsif m =~ /\S+=/
    deep_set(m.gsub(/=/, ''), self, args[0])
  else
    deep_get(m, self)
  end
end