module Garcon::Extensions::MethodQuery
MethodQuery
gives you the ability to check for the truthiness of a key via method calls. Note that it will return false if the key is set to a non-truthful value, not if the key isn’t set at all. Use key? for checking if a key has been set.
MethodQuery
will check against both string and symbol names of the method for existing keys. It also patches respond_to to appropriately detect the query methods.
@example
class MyHash < Hash include Garcon::Extensions::MethodQuery end h = MyHash.new h['abc'] = 123 h.abc? # => true h['def'] = nil h.def? # => false h.hji? # => NoMethodError
Public Instance Methods
method_missing(name, *args)
click to toggle source
Calls superclass method
# File lib/garcon/core_ext/method_access.rb, line 129 def method_missing(name, *args) if args.empty? && name.to_s =~ /(.*)\?$/ && (key?(Regexp.last_match[1]) || key?(Regexp.last_match[1].to_sym)) return self[Regexp.last_match[1]] || self[Regexp.last_match[1].to_sym] end super end
respond_to?(name, include_private = false)
click to toggle source
Calls superclass method
# File lib/garcon/core_ext/method_access.rb, line 121 def respond_to?(name, include_private = false) if name.to_s =~ /(.*)\?$/ && (key?(Regexp.last_match[1]) || key?(Regexp.last_match[1].to_sym)) return true end super end