diff options
author | Daniel Doubrovkine (dB.) @dblockdotorg <dblock@dblock.org> | 2015-01-19 08:59:53 -0500 |
---|---|---|
committer | Daniel Doubrovkine (dB.) @dblockdotorg <dblock@dblock.org> | 2015-01-19 08:59:53 -0500 |
commit | 32d904b7893be868489fa80f08d103ed819e0fbb (patch) | |
tree | 8d1fa6b77a0601528532958d8d3f82f58d479205 | |
parent | ce1980fc2bc32612586a7a7f055a526e72326757 (diff) | |
parent | dffbb9ec24ac9107befe66a2540d501e5e750b2d (diff) | |
download | hashie-32d904b7893be868489fa80f08d103ed819e0fbb.tar.gz |
Merge pull request #267 from Zloy/refactor-mm
Refactor MethodReader#method_missing
-rw-r--r-- | lib/hashie/extensions/method_access.rb | 18 |
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 |