bury 1.1.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (5) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +1 -1
  3. data/lib/bury/version.rb +1 -1
  4. data/lib/bury.rb +19 -10
  5. metadata +1 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 84d91bcfe1d6d643a532c60ab9858f7914297e933b1acd47d850e2133af57d5a
4
- data.tar.gz: 4cdd52a55a4808fde527578f7a87babd7fd60c11e4cc164bb14b83ab21739d42
3
+ metadata.gz: 25b4c71d146d88c4190584cf774f29a26f4e52a96befc94661c6521821c20e02
4
+ data.tar.gz: 273781e25daf9dadda4ae3a2293e0879af10d41f2b77f12215c9a0b71a8da096
5
5
  SHA512:
6
- metadata.gz: b51c37a562338d21cc59950b0f4b0509515a6deec409a40292feea1e4b6a8865001acfa6d4d963cbf4bb9c28bcaffde125993cec2551de0257a53e14bb4e58be
7
- data.tar.gz: 8825978c730f2b5e062b673d718bee49949f22f42f63fdf5c9c64df866a8f3addc1579640810e19da04ba81de0cef0811fe994cf0add30c667f5990fdb2e88e8
6
+ metadata.gz: 1ea115d106e67338b0ccff50eec868662fbde8df901e31633b779d69de89204552854512dbabec6ca3193d29affbe659d8f04ed6ec3f455fb01a9738e5a0a3a7
7
+ data.tar.gz: fde9f98a65c8219e421566beb6927a747a2146cedc24e4206d96011d6ab03d906ec33037cd92d6c6077536a2c1ea076205afb453ea762d41043dd1be592a7d2b
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- bury (1.1.0)
4
+ bury (2.0.0)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
data/lib/bury/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Bury
2
- VERSION = "1.1.0"
2
+ VERSION = "2.0.0"
3
3
  end
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
- # {}.bury([:a,:b,:c], 1) # => {a:{b:{c: 1}}}
11
- # {a: {d: 2}}.bury([:a,:b,:c], 1) # => {a:{b:{c:1},d:2}}
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!(new_value, &merge_proc) : new_value
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 |_keys, _value, index = 0|
17
- if _keys.size - 1 == index
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!(create_hash_recursively.call(keys, value), &merge_proc)
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
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bury
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Toyoaki Oko