summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorZloy <zhoran@inbox.ru>2015-01-19 08:12:37 +0000
committerZloy <zhoran@inbox.ru>2015-01-19 08:12:37 +0000
commitdffbb9ec24ac9107befe66a2540d501e5e750b2d (patch)
tree8d1fa6b77a0601528532958d8d3f82f58d479205 /lib
parentce1980fc2bc32612586a7a7f055a526e72326757 (diff)
downloadhashie-dffbb9ec24ac9107befe66a2540d501e5e750b2d.tar.gz
Refactor MethodReader#method_missing
Diffstat (limited to 'lib')
-rw-r--r--lib/hashie/extensions/method_access.rb18
1 files changed, 12 insertions, 6 deletions
diff --git a/lib/hashie/extensions/method_access.rb b/lib/hashie/extensions/method_access.rb
index a823d9d..9c3d537 100644
--- a/lib/hashie/extensions/method_access.rb
+++ b/lib/hashie/extensions/method_access.rb
@@ -33,13 +33,19 @@ module Hashie
end
def method_missing(name, *args)
- return self[name.to_s] if key?(name.to_s)
- return self[name.to_sym] if key?(name.to_sym)
- if name[-1] == '?'
- kname = name.to_s[0..-2]
- return key?(kname) || key?(kname.to_sym)
+ if key?(name)
+ self[name]
+ else
+ sname = name.to_s
+ if key?(sname)
+ self[sname]
+ elsif sname[-1] == '?'
+ kname = sname[0..-2]
+ key?(kname) || key?(kname.to_sym)
+ else
+ super
+ end
end
- super
end
end