easily fetch values from nested ruby hashes
Switch branches/tags
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
lib
spec
.gitignore
.travis.yml
Gemfile
LICENSE.txt
README.md
Rakefile
deep_fetch.gemspec

README.md

deep_fetch

Build Status Coverage Status Dependency Status Gem Version

Easily fetch values from nested ruby hashes.

Installation

Add this line to your application's Gemfile:

gem 'deep_fetch'

And then execute:

bundle

How?

Let's say we have a big hash:

example = {
  :foo => {
    :bar => [ 'a', 'b', 'c' ],
    :baz => :boo
  }
}

We can fetch a value under :foo, :baz easily:

example.deep_fetch(:foo, :baz) # => :boo

If the key does not exist, we receive KeyError exception, just like using Hash#fetch

example.deep_fetch(:foo, :boo) # => KeyError: key not found: :boo

Specify a default value to be returned if key is missing in a block:

example.deep_fetch(:foo, :boo) { "not found" } # => "not found"

Lastly, if the hash contains nested array, we can get values from it by providing an integer:

example.deep_fetch(:foo, :bar, 1) # => 'b'

Why?

The gem might be useful when working with deeply nested hashes, e.g. API responses.

By using Hash#deep_fetch we can assert that the response contains the key, making it fail loud otherwise.

Contributing

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request