nice_hash 1.17.3 → 1.18.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4b492d7a368d6caf79d9e49c2ca75ef4931d1952e91ca822644b4fc46d57cb13
4
- data.tar.gz: e942370a78414668493544e61350c17026d9e294445c3b930aecf6f0a4901aea
3
+ metadata.gz: db65b5feb3fcc8b21b275873835592202ac1eb6b82a27325d61f1cad19665712
4
+ data.tar.gz: a1b5014b99126979bb8bf052db0574bd4e9e02b9311b7133a21d1d0467cbcd05
5
5
  SHA512:
6
- metadata.gz: a74d0d1cb4335f55f01c8f726c7bbffb5bc82031f34d66d91aea7a08bf51b245e7a5637a5f7d590423357f375dbcd5ded605623c83619bed23ade7c2c25fc51c
7
- data.tar.gz: 517186ca5314202bf46f5b6747a57e11f796c93ca2d7db07ef45b89d76f2f948d9feb532754ab99e62a9450874228cc79fb969228433250a5284144788f54dee
6
+ metadata.gz: 7ca4ced479153a9de0a527f6b9ceb0a7b248d263e7914e9b0fe498028fc164fafefbbfbe64e7d4abc7850572e760fa4911903e0cb56ac7809c3a2bc7c0bb116b
7
+ data.tar.gz: cb8b29027ce6d232a46f493d20bbb3bc8031c3ff1772e90686097a8102b462e9e76917349bd723db7a3bd42dc4bc9f80f21fb0e28845eae9acd609a5470d363b
data/README.md CHANGED
@@ -37,6 +37,7 @@ To use nice_hash on Http connections take a look at nice_http gem: https://githu
37
37
  + [Random dates](#random-dates)
38
38
  + [Deep copy of a hash](#deep-copy-of-a-hash)
39
39
  + [Nested deletion](#nested-deletion)
40
+ + [Deep merge of two hashes](#deep-merge-of-two-hashes)
40
41
  + [Boolean class](#boolean-class)
41
42
  * [Other tools integration](#other-tools-integration)
42
43
  + [Tabulo](#tabulo)
@@ -888,6 +889,16 @@ If you want to delete a key on a nested hash you can use `delete_nested` and sup
888
889
  #>{:user=>{:address=>{:country=>"Spain"}, :name=>"Peter", :age=>33}, :customer=>true}
889
890
 
890
891
  ```
892
+ #### Deep merge of two hashes
893
+ If you need to merge multidimensional hashes
894
+
895
+ ```ruby
896
+ my_hash = {one: 1, two: 2, three: {car: 'seat'}}
897
+ other_hash = {one: 11, four: 44, three: {car: 'ferrari', model: 'unknown'}}
898
+ p my_hash.nice_merge(other_hash)
899
+ #>{:one=>11, :two=>2, :three=>{:car=>"ferrari", :model=>"unknown"}, :four=>44}
900
+ ```
901
+
891
902
 
892
903
  #### Boolean class
893
904
  We added the possibility to check if a value is boolean or not since in Ruby doesn't exist, just TrueClass and FalseClass
@@ -288,9 +288,26 @@ class Hash
288
288
  NiceHash.nice_filter(self, keys)
289
289
  end
290
290
 
291
+ ###########################################################################
292
+ # Merging multi-dimensional hashes
293
+ ###########################################################################
294
+ def nice_merge(hash = nil)
295
+ return self unless hash.is_a?(Hash)
296
+ base = self
297
+ hash.each do |key, v|
298
+ if base[key].is_a?(Hash) && hash[key].is_a?(Hash)
299
+ base[key].nice_merge(hash[key])
300
+ else
301
+ base[key]= hash[key]
302
+ end
303
+ end
304
+ base
305
+ end
306
+
291
307
  alias gen generate
292
308
  alias val validate
293
309
  alias patterns pattern_fields
310
+ alias nice_copy deep_copy
294
311
  end
295
312
 
296
313
  class Object
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nice_hash
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.17.3
4
+ version: 1.18.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mario Ruiz
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-09-20 00:00:00.000000000 Z
11
+ date: 2023-01-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: string_pattern
@@ -101,7 +101,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
101
101
  - !ruby/object:Gem::Version
102
102
  version: '0'
103
103
  requirements: []
104
- rubygems_version: 3.2.15
104
+ rubygems_version: 3.4.3
105
105
  signing_key:
106
106
  specification_version: 4
107
107
  summary: NiceHash creates hashes following certain patterns so your testing will be