Skip to content

vivek-ng/nested_hash_helper

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

28 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

NestedHashHelper

NestedHashHelper gem's aim is to make your life easier in dealing with nested hashes . If you have been working with Rails , You must have noted that You are dealing with nested hashes ( like params from the front end) a lot .

There are various methods added in the official Ruby code to handle nested hashes , but still it lacks lots of common and useful methods . NestedHashHelper aims to help you with those , so that you can deal with hashes easily in your application .

Development has just begun and is active and we will fix bugs , enhance functionality of existing methods and develop new methods in the upcoming version.

Usage

###1) deep_except(*excluded_keys)

This method extends the functionality of except method of ruby hash to nested hash. pass any number of keys to delete them from the hash . Just pass the immediate key and not the entire key path in the hash .

Syntax

a = {:name => "vivek" , :age => 22}  
a.deep_except(:name)  
output ==> {:age => 22}  
a = {:user => {:name => "vivek" , :age => 22 , :phone => 3333}}  
a.deep_except(:phone , :age)  
output ==> {:user => {:name => "vivek"}}  

2) deep_delete_empty

This method deletes all the keys whose value is either empty or nil .

Syntax

a =  {:user => {:name => "" , :age => 22 , :phone => 3333}}    
a.deep_delete_empty  
output ==> {:user => {:age => 22 , :phone => 3333}}  

3) find_depth

This method finds the depth of your nested hash.

Syntax

a = {:user => {:name => {:last_name => "Vivek"}}}  
a.find_depth  
output ==> 3  

4) find_deep_intersection

This method returns intersection of two nested Hashes.

Syntax

a = {:user => {:name => "vivek" , :age => 22 , :phone => 3333}}  
b = {:user => {:name => "rakesh" , :age => 22 , :phone => 3333}}  
a.find_deep_intersection(b)  
output ==> {:user => {:age => 22 , :phone => 3333}}  

5) find_deep_keys

This method return all the parent keys of the corresponding value.

Syntax

 a = {:gh => {:jj => {:pop => "bbb" , :olo => "ooooo"}} , :pp => "ooooo"}  
 a.find_deep_keys("ooooo")  
 output ==> [:gh , :jj , :olo]  

6) hash_to_array

  This method will convert the given nested hash to an array

  Syntax
  a =  {:fg => {:gh => {:bn => "sdjkhds"} , :jk => ""} , :kl => {:gh => "" , :jk => "sdjkhds"}}
  a.hash_to_array
  output ==> [[:fg, [:gh, [:bn, "sdjkhds"]], [:jk, ""]], [:kl, [:gh, ""], [:jk, "sdjkhds"]]]

  a = {:fg => {:gh => {:bn => ""}} , :kl =>{:jk => "nnnnnnn"}}
  a.hash_to_array
  output ==> [[:fg, [:gh, [:bn, ""]]], [:kl, [:jk, "nnnnnnn"]]]  

7) deep_delete(key)

This method is used to delete a key in a nested hash
 
 Syntax
    a = {:fg => {:gh => {:bn => "sdjkhds"} , :bn => ""} , :kl => {:gh => "" , :jk => "sdjkhds"}}
    a.deep_delete(:gh)
    output ==> {:fg=>{:bn=>""}, :kl=>{:jk=>"sdjkhds"}}   

8) find_all_values(key)

 This method is used to find all the values of a given key 

 Syntax  
  data = {:students => {:a =>{:name => "vivek"} , :b=>{:name => "rakesh"}}}
  data.find_all_values(:name)
  output ==> ["vivek" , "rakesh"]

Installation

Add this line to your application's Gemfile:

gem 'nested_hash_helper'

And then execute:

$ bundle install

Or install it yourself as:

$ gem install nested_hash_helper

Development

After checking out the repo, run bin/setup to install dependencies. Then, run rake test to run the tests. You can also run bin/console for an interactive prompt that will allow you to experiment.

To install this gem onto your local machine, run bundle exec rake install. To release a new version, update the version number in version.rb, and then run bundle exec rake release, which will create a git tag for the version, push git commits and tags, and push the .gem file to rubygems.org.

Contributing

Do Contribute if you come across any bugs / any important feature you feel is essential.

Bug reports and pull requests are welcome on GitHub at https://github.com/vivek3894/nested_hash_helper.

License

The gem is available as open source under the terms of the MIT License.

About

This gem Aims to provide helper methods in dealing with nested Hashes more easily.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published