diff options
author | Zloy <zhoran@inbox.ru> | 2015-01-19 08:12:37 +0000 |
---|---|---|
committer | Zloy <zhoran@inbox.ru> | 2015-01-19 08:12:37 +0000 |
commit | dffbb9ec24ac9107befe66a2540d501e5e750b2d (patch) | |
tree | 8d1fa6b77a0601528532958d8d3f82f58d479205 /lib | |
parent | ce1980fc2bc32612586a7a7f055a526e72326757 (diff) | |
download | hashie-dffbb9ec24ac9107befe66a2540d501e5e750b2d.tar.gz |
Refactor MethodReader#method_missing
Diffstat (limited to 'lib')
-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 |