bury 1.1.0 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/lib/bury/version.rb +1 -1
- data/lib/bury.rb +19 -10
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 25b4c71d146d88c4190584cf774f29a26f4e52a96befc94661c6521821c20e02
|
4
|
+
data.tar.gz: 273781e25daf9dadda4ae3a2293e0879af10d41f2b77f12215c9a0b71a8da096
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1ea115d106e67338b0ccff50eec868662fbde8df901e31633b779d69de89204552854512dbabec6ca3193d29affbe659d8f04ed6ec3f455fb01a9738e5a0a3a7
|
7
|
+
data.tar.gz: fde9f98a65c8219e421566beb6927a747a2146cedc24e4206d96011d6ab03d906ec33037cd92d6c6077536a2c1ea076205afb453ea762d41043dd1be592a7d2b
|
data/Gemfile.lock
CHANGED
data/lib/bury/version.rb
CHANGED
data/lib/bury.rb
CHANGED
@@ -7,20 +7,29 @@ module Bury
|
|
7
7
|
# @param [Object] value
|
8
8
|
# @return [Hash]
|
9
9
|
# @example example
|
10
|
-
#
|
11
|
-
#
|
10
|
+
# hash = {a: {d: 2}}
|
11
|
+
# hash.bury([:a,:b,:c], 1) # => {a:{b:{c:1},d:2}}
|
12
|
+
# hash # => {a: {d: 2}}
|
12
13
|
def bury(keys, value)
|
13
14
|
merge_proc = lambda do |_key, old_value, new_value|
|
14
|
-
[old_value, new_value].all? { |v| v.is_a? Hash } ? old_value.merge
|
15
|
+
[old_value, new_value].all? { |v| v.is_a? Hash } ? old_value.merge(new_value, &merge_proc) : new_value
|
15
16
|
end
|
16
|
-
create_hash_recursively = lambda do |
|
17
|
-
|
18
|
-
{ _keys[index] => _value }
|
19
|
-
else
|
20
|
-
{ _keys[index] => create_hash_recursively.call(_keys, _value, index + 1)}
|
21
|
-
end
|
17
|
+
create_hash_recursively = lambda do |i = 0|
|
18
|
+
{ keys[i] => keys.size - 1 == i ? value : create_hash_recursively.call(i + 1) }
|
22
19
|
end
|
23
|
-
merge
|
20
|
+
merge(create_hash_recursively.call, &merge_proc)
|
21
|
+
end
|
22
|
+
|
23
|
+
# Destructively merges Hashes according to the array of keys passed to it
|
24
|
+
# @param [Array<String|Symbol>] keys
|
25
|
+
# @param [Object] value
|
26
|
+
# @return [Hash]
|
27
|
+
# @example example
|
28
|
+
# hash = {a: {d: 2}}
|
29
|
+
# hash.bury!([:a,:b,:c], 1) # => {a:{b:{c:1},d:2}}
|
30
|
+
# hash # => {a:{b:{c:1},d:2}}
|
31
|
+
def bury!(keys, value)
|
32
|
+
replace(bury(keys, value))
|
24
33
|
end
|
25
34
|
|
26
35
|
end
|