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