Code Monkey home page Code Monkey logo

deep_fetch's Introduction

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

deep_fetch's People

Contributors

jandudulski avatar pewniak747 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

deep_fetch's Issues

License missing from gemspec

Some companies will only use gems with a certain license.
The canonical and easy way to check is via the gemspec
via e.g.

spec.license = 'MIT'
# or
spec.licenses = ['MIT', 'GPL-2']

Bundler now generates gems with a default 'MIT' license. There is even a License Finder
to help companies ensure all gems they use meet their licensing needs. This tool depends on license information being available in the gemspec.
Including a license in your gemspec is a good practice, in any case.

If you need help choosing a license, github has created a license picker tool

How did I find you?

I'm using a script to collect stats on gems, originally looking for download data, but decided to collect licenses too,
and make issues for gemspecs not specifying a license as a public service :)
So far it's going pretty well.
I've written a blog post about it

Add deprecation warning for Ruby > 2.3, since Hash#dig was added

Hi there, I think will be nice to add section in readme outlining new Hash#dig method in Ruby 2.3 which basically does the same and seems much more performant in case no block was provided. I guess it effectively makes this gem obsolete for Ruby 2.3 and newer

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.