nice_hash 1.18.0 → 1.18.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/nice/hash/add_to_ruby.rb +13 -6
- data/lib/nice/hash/deep_clone.rb +30 -0
- data/lib/nice/hash/set_values.rb +4 -1
- data/lib/nice_hash.rb +1 -0
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 28cebce97247546c4f1db4d7f7fda1d307e24cecd2cd8a235782f2c8765092e2
|
4
|
+
data.tar.gz: cc3fca8a245ad2dd48d0bd3d1653ef09c2aa371fe3509304a0c04795bc3e2597
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 196b9c9e068ef89415b6b2883deaec846a1b7b5ccb3b0c835ed2d50e02f409344ecb4bbfd5a4c87cacf46181765f7bf52b0ee945dff5eec81180a3b5c20e93b6
|
7
|
+
data.tar.gz: '09ce814e6899f7c163a5c5c009e1617f33262809b7401ee6d3e8c4e73c1a18c4377cf21d80e1d0dc4d6f2a8da0266f0df5aefe599f4adbc77318c41f0f9a0fa3'
|
@@ -198,8 +198,8 @@ class Hash
|
|
198
198
|
# returns a clean copy of the hash
|
199
199
|
###########################################################################
|
200
200
|
def deep_copy
|
201
|
-
|
202
|
-
end
|
201
|
+
NiceHash.deep_clone(self)
|
202
|
+
end
|
203
203
|
|
204
204
|
###########################################################################
|
205
205
|
# It will filter the hash by the key specified on select_hash_key.
|
@@ -291,18 +291,25 @@ class Hash
|
|
291
291
|
###########################################################################
|
292
292
|
# Merging multi-dimensional hashes
|
293
293
|
###########################################################################
|
294
|
-
def nice_merge(hash = nil)
|
295
|
-
|
296
|
-
|
294
|
+
def nice_merge(hash = nil, return_self = false)
|
295
|
+
if return_self
|
296
|
+
base = self
|
297
|
+
else
|
298
|
+
base = self.deep_copy
|
299
|
+
end
|
300
|
+
return base unless hash.is_a?(Hash)
|
297
301
|
hash.each do |key, v|
|
298
302
|
if base[key].is_a?(Hash) && hash[key].is_a?(Hash)
|
299
|
-
base[key].nice_merge(hash[key])
|
303
|
+
base[key].nice_merge!(hash[key])
|
300
304
|
else
|
301
305
|
base[key]= hash[key]
|
302
306
|
end
|
303
307
|
end
|
304
308
|
base
|
305
309
|
end
|
310
|
+
def nice_merge!(hash = nil)
|
311
|
+
return nice_merge(hash, true)
|
312
|
+
end
|
306
313
|
|
307
314
|
alias gen generate
|
308
315
|
alias val validate
|
@@ -0,0 +1,30 @@
|
|
1
|
+
class NiceHash
|
2
|
+
##################################################
|
3
|
+
# Deep clones the supplied object
|
4
|
+
#
|
5
|
+
# @param obj [Object] The object we want to deep clone
|
6
|
+
#
|
7
|
+
# @return [Object]
|
8
|
+
#
|
9
|
+
# @example
|
10
|
+
# my_hash = { user: {
|
11
|
+
# address: {
|
12
|
+
# city: 'Madrid',
|
13
|
+
# country: 'Spain'
|
14
|
+
# },
|
15
|
+
# name: 'Peter',
|
16
|
+
# age: 33
|
17
|
+
# },
|
18
|
+
# customer: true
|
19
|
+
# }
|
20
|
+
# NiceHash.deep_clone(my_hash)
|
21
|
+
# #>{:user=>{:address=>{:city=>"Madrid", :country=>"Spain"}, :name=>"Peter", :age=>33}, :customer=>true}
|
22
|
+
##################################################
|
23
|
+
def self.deep_clone(obj)
|
24
|
+
obj.clone.tap do |new_obj|
|
25
|
+
new_obj.each do |key, val|
|
26
|
+
new_obj[key] = deep_clone(val) if val.is_a?(Hash)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
data/lib/nice/hash/set_values.rb
CHANGED
@@ -34,6 +34,7 @@ class NiceHash
|
|
34
34
|
end
|
35
35
|
|
36
36
|
end
|
37
|
+
|
37
38
|
hash_array.each do |k, v|
|
38
39
|
#for the case of using same_values: [:pwd1, :pwd2] => :'10:N' and supply hash_values: pwd1: 'a', pwd2: 'b'
|
39
40
|
#instead of [:pwd1,:pwd2]=>'a'
|
@@ -69,8 +70,8 @@ class NiceHash
|
|
69
70
|
hash_values.each do |kk,vv|
|
70
71
|
if kk.to_s.match?(/^#{k}\./)
|
71
72
|
kk = kk.to_s.gsub(/^#{k}\./, '').to_sym
|
72
|
-
new_hash_values[kk] = vv
|
73
73
|
end
|
74
|
+
new_hash_values[kk] = vv
|
74
75
|
end
|
75
76
|
hashv[k] = NiceHash.set_values(v, new_hash_values)
|
76
77
|
else
|
@@ -81,9 +82,11 @@ class NiceHash
|
|
81
82
|
end
|
82
83
|
end
|
83
84
|
end
|
85
|
+
|
84
86
|
hash_values.each do |k, v|
|
85
87
|
hashv = NiceHash.set_nested(hashv, k, v, true) if k.is_a?(Hash)
|
86
88
|
end
|
89
|
+
|
87
90
|
return hashv
|
88
91
|
elsif hash_array.is_a?(Array) and hash_array.size > 0
|
89
92
|
hashv = Array.new
|
data/lib/nice_hash.rb
CHANGED
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.18.
|
4
|
+
version: 1.18.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mario Ruiz
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-01-
|
11
|
+
date: 2023-01-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: string_pattern
|
@@ -69,6 +69,7 @@ files:
|
|
69
69
|
- lib/nice/hash/add_to_ruby.rb
|
70
70
|
- lib/nice/hash/change_one_by_one.rb
|
71
71
|
- lib/nice/hash/compare_structure.rb
|
72
|
+
- lib/nice/hash/deep_clone.rb
|
72
73
|
- lib/nice/hash/delete_nested.rb
|
73
74
|
- lib/nice/hash/generate.rb
|
74
75
|
- lib/nice/hash/get_all_keys.rb
|