bury 1.0.0 → 1.1.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: bfb00bb3657a9beda236f58ca242bb57dd73f50b1ebbabb5b1b5f738f48be65a
4
- data.tar.gz: 58a19088e398773c66c848a8982580614e5c91ca3bc575f27a3eb00c5e9d1517
3
+ metadata.gz: 84d91bcfe1d6d643a532c60ab9858f7914297e933b1acd47d850e2133af57d5a
4
+ data.tar.gz: 4cdd52a55a4808fde527578f7a87babd7fd60c11e4cc164bb14b83ab21739d42
5
5
  SHA512:
6
- metadata.gz: a54935b5f1e8537cfe206c37b992750c367ddc8395c7345413a8b9be42890457d1947e76c1d8012f32fe98801c1e1e9934d4135638a40f2d3d9e8c46cc998da3
7
- data.tar.gz: 10369d7e63d994fdeceb655364f024a81435202cb3b03318ba94f552038cbeafa118fa78ec63cd9a2deeb48d35e916452bd6151f8263715c2ac569dc1b99a28c
6
+ metadata.gz: b51c37a562338d21cc59950b0f4b0509515a6deec409a40292feea1e4b6a8865001acfa6d4d963cbf4bb9c28bcaffde125993cec2551de0257a53e14bb4e58be
7
+ data.tar.gz: 8825978c730f2b5e062b673d718bee49949f22f42f63fdf5c9c64df866a8f3addc1579640810e19da04ba81de0cef0811fe994cf0add30c667f5990fdb2e88e8
@@ -0,0 +1,30 @@
1
+ name: Ruby Gem
2
+
3
+ on:
4
+ workflow_dispatch:
5
+
6
+ jobs:
7
+ build:
8
+ name: Build + Publish
9
+ runs-on: ubuntu-latest
10
+ permissions:
11
+ contents: read
12
+ packages: write
13
+
14
+ steps:
15
+ - uses: actions/checkout@v2
16
+ - name: Set up Ruby 2.6
17
+ uses: actions/setup-ruby@v1
18
+ with:
19
+ ruby-version: 2.6.x
20
+
21
+ - name: Publish to RubyGems
22
+ run: |
23
+ mkdir -p $HOME/.gem
24
+ touch $HOME/.gem/credentials
25
+ chmod 0600 $HOME/.gem/credentials
26
+ printf -- "---\n:rubygems_api_key: ${GEM_HOST_API_KEY}\n" > $HOME/.gem/credentials
27
+ gem build *.gemspec
28
+ gem push *.gem
29
+ env:
30
+ GEM_HOST_API_KEY: "${{secrets.RUBYGEMS_AUTH_TOKEN}}"
@@ -0,0 +1,26 @@
1
+ name: Test
2
+
3
+ on:
4
+ push:
5
+ branches: [ main ]
6
+ pull_request:
7
+ branches: [ main ]
8
+
9
+ jobs:
10
+ test:
11
+ runs-on: ubuntu-latest
12
+ strategy:
13
+ matrix:
14
+ ruby: ['2.3', '2.4', '2.5', '2.6', '2.7', '3.0', '3.1']
15
+
16
+ steps:
17
+ - uses: actions/checkout@v2
18
+ - name: Set up Ruby
19
+ uses: ruby/setup-ruby@v1
20
+ with:
21
+ ruby-version: ${{ matrix.ruby }}
22
+ bundler-cache: true
23
+ - name: Update RubyGems
24
+ run: gem update --system 3.2.3
25
+ - name: Run tests
26
+ run: bundle exec rake
data/Gemfile.lock CHANGED
@@ -1,16 +1,12 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- bury (1.0.0)
4
+ bury (1.1.0)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
8
8
  specs:
9
9
  minitest (5.15.0)
10
- minitest-power_assert (0.3.1)
11
- minitest
12
- power_assert (>= 1.1)
13
- power_assert (2.0.1)
14
10
  rake (12.3.3)
15
11
 
16
12
  PLATFORMS
@@ -19,8 +15,7 @@ PLATFORMS
19
15
  DEPENDENCIES
20
16
  bury!
21
17
  minitest (~> 5.0)
22
- minitest-power_assert (~> 0.3)
23
18
  rake (~> 12.0)
24
19
 
25
20
  BUNDLED WITH
26
- 2.1.4
21
+ 2.3.5
data/README.md CHANGED
@@ -1,5 +1,7 @@
1
1
  # Bury
2
2
 
3
+ [![Test](https://github.com/patorash/bury/actions/workflows/test.yml/badge.svg)](https://github.com/patorash/bury/actions/workflows/test.yml)
4
+
3
5
  Bury is a library for extending the Hash class. `Hash#bury` method is the opposite of the `Hash#dig` method.
4
6
 
5
7
  ## Installation
data/bury.gemspec CHANGED
@@ -6,8 +6,8 @@ Gem::Specification.new do |spec|
6
6
  spec.authors = ["Toyoaki Oko"]
7
7
  spec.email = ["chariderpato@gmail.com"]
8
8
 
9
- spec.summary = %q{Bury defines Hash#bury method.}
10
- spec.description = %q{Bury defines Hash#bury method.}
9
+ spec.summary = %q{Bury is a library for extending the Hash class. Hash#bury method is the opposite of the Hash#dig method.}
10
+ spec.description = %q{Bury is a library for extending the Hash class. Hash#bury method is the opposite of the Hash#dig method.}
11
11
  spec.homepage = "https://github.com/patorash/bury"
12
12
  spec.license = "MIT"
13
13
  spec.required_ruby_version = Gem::Requirement.new(">= 2.3.0")
@@ -27,5 +27,4 @@ Gem::Specification.new do |spec|
27
27
 
28
28
  spec.add_development_dependency 'rake', '~> 12.0'
29
29
  spec.add_development_dependency 'minitest', '~> 5.0'
30
- spec.add_development_dependency 'minitest-power_assert', '~> 0.3'
31
30
  end
data/lib/bury/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Bury
2
- VERSION = "1.0.0"
2
+ VERSION = "1.1.0"
3
3
  end
data/lib/bury.rb CHANGED
@@ -5,21 +5,14 @@ module Bury
5
5
  # Merge Hash according to the array of keys passed to Hash
6
6
  # @param [Array<String|Symbol>] keys
7
7
  # @param [Object] value
8
- # @option [Integer] index
9
8
  # @return [Hash]
10
9
  # @example example
11
10
  # {}.bury([:a,:b,:c], 1) # => {a:{b:{c: 1}}}
12
11
  # {a: {d: 2}}.bury([:a,:b,:c], 1) # => {a:{b:{c:1},d:2}}
13
12
  def bury(keys, value)
14
- merge_for_burying = lambda do |hash, _keys, target_hash, index = 0|
15
- key = _keys[index]
16
- if hash.has_key?(key) && hash[key].is_a?(Hash)
17
- merge_for_burying.call(hash[key], _keys, target_hash, index + 1)
18
- else
19
- hash.merge!(index.zero? ? target_hash : target_hash.dig(*_keys.take(index)))
20
- end
13
+ 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
21
15
  end
22
-
23
16
  create_hash_recursively = lambda do |_keys, _value, index = 0|
24
17
  if _keys.size - 1 == index
25
18
  { _keys[index] => _value }
@@ -27,10 +20,7 @@ module Bury
27
20
  { _keys[index] => create_hash_recursively.call(_keys, _value, index + 1)}
28
21
  end
29
22
  end
30
-
31
- merge_for_burying.call(self, keys, create_hash_recursively.call(keys, value))
32
-
33
- self
23
+ merge!(create_hash_recursively.call(keys, value), &merge_proc)
34
24
  end
35
25
 
36
26
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bury
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Toyoaki Oko
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-01-26 00:00:00.000000000 Z
11
+ date: 2022-01-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -38,27 +38,16 @@ dependencies:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '5.0'
41
- - !ruby/object:Gem::Dependency
42
- name: minitest-power_assert
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - "~>"
46
- - !ruby/object:Gem::Version
47
- version: '0.3'
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - "~>"
53
- - !ruby/object:Gem::Version
54
- version: '0.3'
55
- description: Bury defines Hash#bury method.
41
+ description: Bury is a library for extending the Hash class. Hash#bury method is the
42
+ opposite of the Hash#dig method.
56
43
  email:
57
44
  - chariderpato@gmail.com
58
45
  executables: []
59
46
  extensions: []
60
47
  extra_rdoc_files: []
61
48
  files:
49
+ - ".github/workflows/gem-push.yml"
50
+ - ".github/workflows/test.yml"
62
51
  - ".gitignore"
63
52
  - CODE_OF_CONDUCT.md
64
53
  - Gemfile
@@ -92,9 +81,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
92
81
  - !ruby/object:Gem::Version
93
82
  version: '0'
94
83
  requirements: []
95
- rubyforge_project:
96
- rubygems_version: 2.7.3
84
+ rubygems_version: 3.2.3
97
85
  signing_key:
98
86
  specification_version: 4
99
- summary: Bury defines Hash#bury method.
87
+ summary: Bury is a library for extending the Hash class. Hash#bury method is the opposite
88
+ of the Hash#dig method.
100
89
  test_files: []