lib/duck_puncher/ducks/hash.rb in duck_puncher-2.6.0 vs lib/duck_puncher/ducks/hash.rb in duck_puncher-2.7.0

- old
+ new

@@ -3,19 +3,16 @@ module Hash # http://coryodaniel.com/index.php/2009/12/30/ruby-getting-deeply-nested-values-from-a-hash-in-one-line-of-code/ def dig(*_keys_) last_level = self sought_value = nil - _keys_.each_with_index do |_key_, _idx_| - if last_level.is_a?(Hash) && last_level.has_key?(_key_) - if _idx_ + 1 == _keys_.length - sought_value = last_level[_key_] - else - last_level = last_level[_key_] - end + break unless last_level.respond_to?(:has_key?) + break unless last_level.has_key?(_key_) + if _idx_ + 1 == _keys_.length + sought_value = last_level[_key_] else - break + last_level = last_level[_key_] end end sought_value end unless method_defined?(:dig)