nice_hash 1.18.1 → 1.18.3
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 +38 -0
- 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: a94b3296aebd74d819129f0c1f78a8727b4845c7f1204061768a1f7d8dfb044e
|
4
|
+
data.tar.gz: 901de5b3043b42c499e01820e654950c03f2fa0fc305cff1e4a904681be11af7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6680d1e70b147ceff037e223ec78e37bbba08b76accffc96adcf29cc00a975cb76e697e3aad5b9507131c5964a10563c5ee1c6d0a5904b2f7f7281b9bef43443
|
7
|
+
data.tar.gz: 8cbd3a88cceaf12958afbeac4c10b1ef34fed4f2ccf5fcbdeebfff1f5bace38613ce4acc7188733dcf3b8b10abe7d138129506f121895dd4bab3b1996ec0182c
|
@@ -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,38 @@
|
|
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
|
+
if new_obj.is_a?(Array)
|
26
|
+
new_obj.each_with_index do |val, i|
|
27
|
+
new_obj[i] = deep_clone(val)
|
28
|
+
end
|
29
|
+
elsif new_obj.is_a?(Hash)
|
30
|
+
new_obj.each do |key, val|
|
31
|
+
new_obj[key] = deep_clone(val)
|
32
|
+
end
|
33
|
+
else
|
34
|
+
new_obj = obj.clone
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
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.3
|
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-
|
11
|
+
date: 2023-02-17 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
|