HashDiff
![Gem Version](https://badge.fury.io/rb/hash_diff.png)
Deep comparison of Ruby Hash objects
Installation
Add this line to your application's Gemfile:
gem 'hash_diff'
And then execute:
$ bundle
Or install it yourself as:
$ gem install hash_diff
Usage
Easily find the differences between two Ruby hashes.
left = {
foo: 'bar',
bar: 'foo',
nested: {
foo: 'bar',
bar: {
one: 'foo1'
}
},
num: 1,
favorite_restaurant: "Shoney's"
}
right = {
foo: 'bar2',
bar: 'foo2',
nested: {
foo: 'bar2',
bar: {
two: 'foo2'
}
},
word: 'monkey',
favorite_restaurant: nil
}
hash_diff = HashDiff::Comparison.new( left, right )
Comparison#diff returns the left and right side differences
hash_diff.diff
You can also compare two arrays. The comparison is sensitive to the order of the elements in the array.
Missing keys
When there is a key that exists on one side it will return HashDiff::NO_VALUE
to represent a missing key.
Comparison#left_diff returns only the left side differences
hash_diff.left_diff
Comparison#right_diff returns only the right side differences
hash_diff.right_diff
You can also use these shorthand methods
HashDiff.diff(left, right)
HashDiff.left_diff(left, right)
HashDiff.right_diff(left, right)
Hash#diff is not provided by default, and monkey patching is frowned upon by some, but to provide a one way shorthand call HashDiff.patch!
HashDiff.patch!
left = { foo: 'bar', num: 1 }
right = { foo: 'baz', num: 1 }
left.diff(right)
License
Authored by the Engineering Team of Coding ZEAL
Copyright (c) 2017 Zeal, LLC. Licensed under the MIT license.
Contributing
- Fork it
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create new Pull Request