bury 1.1.0 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
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