jabara_group 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 27e8b2ad25b01f3891f6749139b007bbaf3dd482e561e83b4ec07f64a99b71cf
4
- data.tar.gz: 1d67c3ea8f075e65cb777483c5928a231e85110b4af55b2d83cbf6cbf09a9d15
3
+ metadata.gz: f3146fa943e7c76cb41fea4a2a0029a0b3dcefb2d7cebdc63db124d6e70184db
4
+ data.tar.gz: 9101738b638da7d9bbc2ee1eab20368dc14da2e00b852cbaaca53ac9628f8146
5
5
  SHA512:
6
- metadata.gz: dcff4dfdb022a258006e33ac8d97389f7873251a6ed7216571f714be3948c71b6d8871d42dff5143a13a8eeebbe15417fd1df29fd932d458fbb4854102bccd7b
7
- data.tar.gz: 986a4202a5ae021941d0a57cb0f8b9b0612ac8c140b7d3744426f77816f515773670f105ab27d17532c94387f0e144214244dfb35b7d4fc28927a50c78d71004
6
+ metadata.gz: 5889df9191b542cf47d51f497b894ecdf601a744aa71b6273a95a7946db975df832f8e21e1248c149bb353e80b299839409004ee2a87bc5b62b968079525bf5f
7
+ data.tar.gz: 7f245a6eba794a691f3d163d0cccf591d97cd7b10e9be885cf1f6715074f07f3fe0d0dfbce1d625e5d1d522073957a9fd3dd03f8a81a55f710d307f1ff2ba43f
@@ -0,0 +1,31 @@
1
+ name: Ruby CI
2
+
3
+ on:
4
+ push:
5
+ branches: [ master ]
6
+ pull_request:
7
+ branches: [ master ]
8
+
9
+ jobs:
10
+ test:
11
+ runs-on: ubuntu-latest
12
+ if: >-
13
+ ${{!(false
14
+ || contains(github.event.head_commit.message, '[DOC]')
15
+ || contains(github.event.pull_request.title, '[DOC]')
16
+ )}}
17
+
18
+ strategy:
19
+ matrix:
20
+ ruby-version: ['3.1', '3.2', '3.3', '3.4']
21
+ steps:
22
+ - uses: actions/checkout@v4
23
+ - name: Set up Ruby ${{ matrix.ruby-version }}
24
+ uses: ruby/setup-ruby@v1
25
+ with:
26
+ ruby-version: ${{ matrix.ruby-version }}
27
+ bundler-cache: true
28
+ - name: Install dependencies
29
+ run: bundle install
30
+ - name: Run tests
31
+ run: bundle exec rake
data/CHANGELOG.md ADDED
@@ -0,0 +1,9 @@
1
+ # Changelog
2
+
3
+ ## 0.2.0 (2025-02-03)
4
+
5
+ * Add `Enumerable#jabara_for` method.
6
+
7
+ ## 0.1.1 (2025-02-03)
8
+
9
+ * Add RBS file.
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # JabaraGroup
2
2
 
3
- This gem add Enumerable#jabara(n) for jabara grouping.
3
+ This gem add `Enumerable#jabara(n)` for jabara grouping.
4
4
 
5
5
  ```
6
6
  [*1..6].jabara(3) # => [[1, 6], [2, 5], [3, 4]]
data/Steepfile ADDED
@@ -0,0 +1,7 @@
1
+ D = Steep::Diagnostic
2
+
3
+ target :lib do
4
+ signature "sig"
5
+ check "lib"
6
+ configure_code_diagnostics(D::Ruby.default)
7
+ end
data/jabara_group.gemspec CHANGED
@@ -22,7 +22,8 @@ Gem::Specification.new do |spec|
22
22
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
23
23
  spec.require_paths = ["lib"]
24
24
 
25
- spec.add_development_dependency "bundler", "~> 1.17"
26
- spec.add_development_dependency "rake", "~> 10.0"
27
- spec.add_development_dependency "minitest", "~> 5.0"
25
+ spec.add_development_dependency "bundler"
26
+ spec.add_development_dependency "rake"
27
+ spec.add_development_dependency "minitest"
28
+ spec.add_development_dependency "steep"
28
29
  end
@@ -1,3 +1,3 @@
1
1
  module JabaraGroup
2
- VERSION = "0.1.0"
2
+ VERSION = "0.2.0"
3
3
  end
data/lib/jabara_group.rb CHANGED
@@ -1,9 +1,24 @@
1
1
  require "jabara_group/version"
2
2
 
3
3
  module Enumerable
4
+ # Divides +self+ into +n+ groups.
5
+ #
6
+ # The distribution of elements is done as follows:
7
+ # The 1st element goes to the 1st group, the 2nd element goes to the 2nd group, ..., the nth element goes to the nth group.
8
+ # The n+1th element goes to the nth group, the n+2th element goes to the n-1th group, ..., the 2nth element goes to the 1st group.
9
+ # The 2n+1th element goes to the first group, the 2n+2th element goes to the 2nd group, and so on.
10
+ #
11
+ # Each group has <code>self.size / n</code> elements if <code>self.size % n == 0</code>.
12
+ # Otherwise, some groups have <code>(self.size / n) + 1</code> elements.
13
+ #
14
+ # ("a".."l").jabara(3) # => [["a", "f", "g", "l"], ["b", "e", "h", "k"], ["c", "d", "i", "j"]]
15
+ # ('a'..'m').jabara(3) # => [["a", "f", "g", "l", "m"], ["b", "e", "h", "k"], ["c", "d", "i", "j"]]
16
+ #
17
+ # @param n [Integer] the number of groups
18
+ # @return [Array<Array<Object>>]
4
19
  def jabara(n)
5
- raise ArgumentError.new('should be positive') if n <= 0
6
- return [dup] if n == 1
20
+ raise ArgumentError.new("must be positive") if n <= 0
21
+ return [to_a] if n == 1
7
22
 
8
23
  index, direction = 0, 1
9
24
  each_with_object(Array.new(n) { [] }) do |e, groups|
@@ -22,4 +37,18 @@ module Enumerable
22
37
  index += direction
23
38
  end
24
39
  end
40
+
41
+ # Divides +self+ for +keys+.
42
+ #
43
+ # This method divides +self+ into +self.size+ groups and returns a +Hash+ with +keys+ as keys and groups as values.
44
+ #
45
+ # ("a".."l").jabara_for(%w(A B C)) # => { "A" => ["a", "f", "g", "l"], "B" => ["b", "e", "h", "k"], "C" => ["c", "d", "i", "j"] }
46
+ #
47
+ # @param keys [Enumerable]
48
+ # @return [Hash<Object, Array<Object>>]
49
+ def jabara_for(keys)
50
+ keys_array = keys.to_a
51
+ groups = jabara(keys_array.size)
52
+ keys_array.zip(groups).to_h
53
+ end
25
54
  end
@@ -0,0 +1,8 @@
1
+ module JabaraGroup
2
+ VERSION: String
3
+ end
4
+
5
+ module Enumerable[unchecked out Elem]
6
+ def jabara: (Integer n) -> Array[Array[Elem]]
7
+ def jabara_for: [T] (Enumerable[T]) -> Hash[T, Array[Elem]]
8
+ end
metadata CHANGED
@@ -1,80 +1,94 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jabara_group
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kouhei Yanagita
8
- autorequire:
9
8
  bindir: exe
10
9
  cert_chain: []
11
- date: 2019-10-11 00:00:00.000000000 Z
10
+ date: 2025-02-03 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: bundler
15
14
  requirement: !ruby/object:Gem::Requirement
16
15
  requirements:
17
- - - "~>"
16
+ - - ">="
18
17
  - !ruby/object:Gem::Version
19
- version: '1.17'
18
+ version: '0'
20
19
  type: :development
21
20
  prerelease: false
22
21
  version_requirements: !ruby/object:Gem::Requirement
23
22
  requirements:
24
- - - "~>"
23
+ - - ">="
25
24
  - !ruby/object:Gem::Version
26
- version: '1.17'
25
+ version: '0'
27
26
  - !ruby/object:Gem::Dependency
28
27
  name: rake
29
28
  requirement: !ruby/object:Gem::Requirement
30
29
  requirements:
31
- - - "~>"
30
+ - - ">="
32
31
  - !ruby/object:Gem::Version
33
- version: '10.0'
32
+ version: '0'
34
33
  type: :development
35
34
  prerelease: false
36
35
  version_requirements: !ruby/object:Gem::Requirement
37
36
  requirements:
38
- - - "~>"
37
+ - - ">="
39
38
  - !ruby/object:Gem::Version
40
- version: '10.0'
39
+ version: '0'
41
40
  - !ruby/object:Gem::Dependency
42
41
  name: minitest
43
42
  requirement: !ruby/object:Gem::Requirement
44
43
  requirements:
45
- - - "~>"
44
+ - - ">="
46
45
  - !ruby/object:Gem::Version
47
- version: '5.0'
46
+ version: '0'
48
47
  type: :development
49
48
  prerelease: false
50
49
  version_requirements: !ruby/object:Gem::Requirement
51
50
  requirements:
52
- - - "~>"
51
+ - - ">="
53
52
  - !ruby/object:Gem::Version
54
- version: '5.0'
55
- description:
53
+ version: '0'
54
+ - !ruby/object:Gem::Dependency
55
+ name: steep
56
+ requirement: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: '0'
61
+ type: :development
62
+ prerelease: false
63
+ version_requirements: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: '0'
56
68
  email:
57
69
  - yanagi@shakenbu.org
58
70
  executables: []
59
71
  extensions: []
60
72
  extra_rdoc_files: []
61
73
  files:
74
+ - ".github/workflows/test.yml"
62
75
  - ".gitignore"
63
- - ".travis.yml"
76
+ - CHANGELOG.md
64
77
  - Gemfile
65
78
  - LICENSE.txt
66
79
  - README.md
67
80
  - Rakefile
81
+ - Steepfile
68
82
  - bin/console
69
83
  - bin/setup
70
84
  - jabara_group.gemspec
71
85
  - lib/jabara_group.rb
72
86
  - lib/jabara_group/version.rb
87
+ - sig/jabara_group.rbs
73
88
  homepage: https://github.com/kyanagi/jabara_group
74
89
  licenses:
75
90
  - MIT
76
91
  metadata: {}
77
- post_install_message:
78
92
  rdoc_options: []
79
93
  require_paths:
80
94
  - lib
@@ -89,8 +103,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
89
103
  - !ruby/object:Gem::Version
90
104
  version: '0'
91
105
  requirements: []
92
- rubygems_version: 3.0.3
93
- signing_key:
106
+ rubygems_version: 3.6.3
94
107
  specification_version: 4
95
108
  summary: Add Enumerable#jabara for jabara grouping
96
109
  test_files: []
data/.travis.yml DELETED
@@ -1,7 +0,0 @@
1
- ---
2
- sudo: false
3
- language: ruby
4
- cache: bundler
5
- rvm:
6
- - 2.6.5
7
- before_install: gem install bundler -v 1.17.2