nice_hash 1.17.2 → 1.18.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +11 -0
  3. data/lib/nice/hash/add_to_ruby.rb +17 -0
  4. metadata +15 -15
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ea6ec325ff1701227b524b3c505ca2fd3a51a9aa14b93500daac933d28a51038
4
- data.tar.gz: 022c3fb36a242cba72232325fcee90d5aa17ecf98fbc58d30502f68acb439baf
3
+ metadata.gz: db65b5feb3fcc8b21b275873835592202ac1eb6b82a27325d61f1cad19665712
4
+ data.tar.gz: a1b5014b99126979bb8bf052db0574bd4e9e02b9311b7133a21d1d0467cbcd05
5
5
  SHA512:
6
- metadata.gz: 5cf59b5a2e462a627f1a4162cfdcbfe3b3ebb3149a7ac66a5b86273a94a2913bce39b1f910bfe1ffed646a707b4c998100f38297d2193722abd03e9bcee78cb9
7
- data.tar.gz: 824eff3a37cce48ead2b6527b17c5c0b78e84f591426a3f0934a5964bb302ac0e3b67ec61e31e1c21ab50d3cdea3077564fffeb0b15401beb0f4b9c8e731bcfd
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.2
4
+ version: 1.18.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mario Ruiz
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-02-23 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
@@ -16,40 +16,40 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '2.2'
19
+ version: '2.3'
20
20
  - - ">="
21
21
  - !ruby/object:Gem::Version
22
- version: 2.2.2
22
+ version: 2.3.0
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  requirements:
27
27
  - - "~>"
28
28
  - !ruby/object:Gem::Version
29
- version: '2.2'
29
+ version: '2.3'
30
30
  - - ">="
31
31
  - !ruby/object:Gem::Version
32
- version: 2.2.2
32
+ version: 2.3.0
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: rspec
35
35
  requirement: !ruby/object:Gem::Requirement
36
36
  requirements:
37
- - - ">="
38
- - !ruby/object:Gem::Version
39
- version: 3.9.0
40
37
  - - "~>"
41
38
  - !ruby/object:Gem::Version
42
39
  version: '3.9'
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ version: 3.9.0
43
43
  type: :development
44
44
  prerelease: false
45
45
  version_requirements: !ruby/object:Gem::Requirement
46
46
  requirements:
47
- - - ">="
48
- - !ruby/object:Gem::Version
49
- version: 3.9.0
50
47
  - - "~>"
51
48
  - !ruby/object:Gem::Version
52
49
  version: '3.9'
50
+ - - ">="
51
+ - !ruby/object:Gem::Version
52
+ version: 3.9.0
53
53
  description: 'NiceHash creates hashes following certain patterns so your testing will
54
54
  be much easier. Parse and filter JSON. You can easily generate all the hashes you
55
55
  want following the criteria you specify. Many other features coming to Hash class
@@ -101,8 +101,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
101
101
  - !ruby/object:Gem::Version
102
102
  version: '0'
103
103
  requirements: []
104
- rubygems_version: 3.0.3
105
- signing_key:
104
+ rubygems_version: 3.4.3
105
+ signing_key:
106
106
  specification_version: 4
107
107
  summary: NiceHash creates hashes following certain patterns so your testing will be
108
108
  much easier. Parse and filter JSON. Perfect to be used in test data factories