Sha256: fd60722577fdf78c0c13dd719e5e77992ad1e328ac84f8c0b010b7514e28a600

Contents?: true

Size: 619 Bytes

Versions: 9

Compression:

Stored size: 619 Bytes

Contents

module DuckPuncher
  module Hash
    # http://coryodaniel.com/index.php/2009/12/30/ruby-getting-deeply-nested-values-from-a-hash-in-one-line-of-code/
    def seek(*_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
        else
          break
        end
      end

      sought_value
    end
  end
end

Hash.send(:include, DuckPuncher::Hash)

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
duck_puncher-2.3.0 lib/duck_puncher/hash.rb
duck_puncher-2.2.0 lib/duck_puncher/hash.rb
duck_puncher-2.1.0 lib/duck_puncher/hash.rb
duck_puncher-2.0.0 lib/duck_puncher/hash.rb
duck_puncher-1.0.0 lib/duck_puncher/hash.rb
duck_puncher-0.2.0 lib/duck_puncher/hash.rb
duck_puncher-0.1.2 lib/duck_puncher/hash.rb
duck_puncher-0.1.1 lib/duck_puncher/hash.rb
duck_puncher-0.1.0 lib/duck_puncher/hash.rb