range_ppoi_string 0.1.0 → 0.2.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
- SHA1:
3
- metadata.gz: 50a47389e0d62fefc9501c9adcd951025b86adfe
4
- data.tar.gz: 3ed908274eb6a58c3ebc267b3f12ef3da7a93fc0
2
+ SHA256:
3
+ metadata.gz: 949d37eed843fc384a2154ec894f7d5dc5cb8783c11d99fb3854fbbad9178bdd
4
+ data.tar.gz: 1fb40086d81916019858b321caae3a4fbec60b882f23e694c8f23ebbfb7a6b73
5
5
  SHA512:
6
- metadata.gz: f3d6181fd51442b266df35f1878d735aa2a0dd54907dbe51cc28e70b0cf339dadc97217a3097de1cf79dffb4748497ccf23725ff0110064f34d82079f3080cfc
7
- data.tar.gz: a2e85346326207eb6298d96b4e2b2860399fee5868ab2feff655d09425d2e6c36fe4ff4360578f36a191c7587dacd068b4363bc2bfad5412d2583ce25f13b179
6
+ metadata.gz: 26164f3c5bbd483fb4dd68c862b7fc8aad3159bbb2ec539fd0c7f31527c3c6c0951cc3fb225e3420e799b47578c40e2944f1f95556773b7e1c438052902ba617
7
+ data.tar.gz: 8576b54e07bbd45fb46bec0b3cc05c9f9dc513b14078bd2ceb6cd5935d3c23db6dcbb24c8966fa7fc8ed79a18925f9aeeeb7af596d1f82f1d3203ee8030cf039
@@ -0,0 +1,35 @@
1
+ name: Release
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - 'v*'
7
+
8
+ jobs:
9
+ release:
10
+ runs-on: ubuntu-latest
11
+
12
+ permissions:
13
+ contents: write
14
+ id-token: write # Required for Trusted Publisher
15
+
16
+ steps:
17
+ - uses: actions/checkout@v4
18
+
19
+ - name: Set up Ruby
20
+ uses: ruby/setup-ruby@v1
21
+ with:
22
+ ruby-version: '3.3'
23
+ bundler-cache: true
24
+
25
+ - name: Build gem
26
+ run: gem build range_ppoi_string.gemspec
27
+
28
+ - name: Push to RubyGems (Trusted Publisher)
29
+ uses: rubygems/release-gem@v1
30
+
31
+ - name: Create GitHub Release
32
+ uses: softprops/action-gh-release@v1
33
+ with:
34
+ files: range_ppoi_string-*.gem
35
+ generate_release_notes: true
@@ -0,0 +1,22 @@
1
+ name: Test
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
+ strategy:
13
+ fail-fast: false
14
+ matrix:
15
+ ruby: ["3.2", "3.3", "3.4", "4.0"]
16
+ steps:
17
+ - uses: actions/checkout@v4
18
+ - uses: ruby/setup-ruby@v1
19
+ with:
20
+ ruby-version: ${{ matrix.ruby }}
21
+ bundler-cache: true
22
+ - run: bundle exec rake test
data/CLAUDE.md ADDED
@@ -0,0 +1,31 @@
1
+ # CLAUDE.md
2
+
3
+ This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
4
+
5
+ ## Project Overview
6
+
7
+ RangePpoiString は配列とレンジっぽい文字列(`"1-3,5,7"`)を相互変換する Ruby gem。Ruby の Refinements パターンで `Array#to_s` と `String#to_a` を拡張している。
8
+
9
+ ## Commands
10
+
11
+ ```bash
12
+ # テスト実行(デフォルトタスク)
13
+ rake test
14
+
15
+ # 依存関係インストール
16
+ bin/setup
17
+
18
+ # 対話コンソール
19
+ bin/console
20
+
21
+ # gem ビルド&リリース
22
+ bundle exec rake release
23
+ ```
24
+
25
+ ## Architecture
26
+
27
+ - **Refinements ベース**: `using RangePpoiString` で有効化。グローバル汚染なし
28
+ - `lib/range_ppoi_string.rb`: `Array#to_s`(配列→レンジ文字列)と `String#to_a`(レンジ文字列→配列)の2つの refine
29
+ - `.next` に応答するオブジェクト(Integer, String の各文字など)で動作する
30
+ - `SortedSet` を使って重複排除&ソート後に連続要素をグルーピング
31
+ - テストフレームワーク: test-unit(`data` マクロによるパラメタライズドテスト)
@@ -1,3 +1,3 @@
1
1
  module RangePpoiString
2
- VERSION = "0.1.0"
2
+ VERSION = "0.2.0"
3
3
  end
@@ -1,5 +1,4 @@
1
1
  require "range_ppoi_string/version"
2
- require "set"
3
2
 
4
3
  module RangePpoiString
5
4
  class NoNextError < StandardError; end
@@ -12,7 +11,7 @@ module RangePpoiString
12
11
  raise NoNextError.new("No next method: #{self.reject(&HAVE_NEXT)}")
13
12
  end
14
13
 
15
- SortedSet[*self].each_with_object([[]]) { |o, res|
14
+ self.uniq.sort.each_with_object([[]]) { |o, res|
16
15
  res.push([]) if res.empty?
17
16
 
18
17
  if res.last.empty? || res.last.last.next == o
@@ -21,7 +21,8 @@ Gem::Specification.new do |spec|
21
21
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
22
22
  spec.require_paths = ["lib"]
23
23
 
24
- spec.add_development_dependency "bundler", "~> 1.13"
25
- spec.add_development_dependency "rake", "~> 10.0"
26
- spec.add_development_dependency "test-unit", '~> 0'
24
+ spec.required_ruby_version = ">= 3.2"
25
+
26
+ spec.add_development_dependency "rake", "~> 13.0"
27
+ spec.add_development_dependency "test-unit", "~> 3.0"
27
28
  end
metadata CHANGED
@@ -1,57 +1,43 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: range_ppoi_string
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
  - yancya
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-10-24 00:00:00.000000000 Z
11
+ date: 2026-02-13 00:00:00.000000000 Z
12
12
  dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: bundler
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - "~>"
18
- - !ruby/object:Gem::Version
19
- version: '1.13'
20
- type: :development
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - "~>"
25
- - !ruby/object:Gem::Version
26
- version: '1.13'
27
13
  - !ruby/object:Gem::Dependency
28
14
  name: rake
29
15
  requirement: !ruby/object:Gem::Requirement
30
16
  requirements:
31
17
  - - "~>"
32
18
  - !ruby/object:Gem::Version
33
- version: '10.0'
19
+ version: '13.0'
34
20
  type: :development
35
21
  prerelease: false
36
22
  version_requirements: !ruby/object:Gem::Requirement
37
23
  requirements:
38
24
  - - "~>"
39
25
  - !ruby/object:Gem::Version
40
- version: '10.0'
26
+ version: '13.0'
41
27
  - !ruby/object:Gem::Dependency
42
28
  name: test-unit
43
29
  requirement: !ruby/object:Gem::Requirement
44
30
  requirements:
45
31
  - - "~>"
46
32
  - !ruby/object:Gem::Version
47
- version: '0'
33
+ version: '3.0'
48
34
  type: :development
49
35
  prerelease: false
50
36
  version_requirements: !ruby/object:Gem::Requirement
51
37
  requirements:
52
38
  - - "~>"
53
39
  - !ruby/object:Gem::Version
54
- version: '0'
40
+ version: '3.0'
55
41
  description: Convert Array to range ppoi string, and reverse
56
42
  email:
57
43
  - yancya@upec.jp
@@ -59,7 +45,10 @@ executables: []
59
45
  extensions: []
60
46
  extra_rdoc_files: []
61
47
  files:
48
+ - ".github/workflows/release.yml"
49
+ - ".github/workflows/test.yml"
62
50
  - ".gitignore"
51
+ - CLAUDE.md
63
52
  - Gemfile
64
53
  - LICENSE
65
54
  - README.md
@@ -73,7 +62,7 @@ homepage: https://github.com/yancya/range_ppoi_string
73
62
  licenses:
74
63
  - MIT
75
64
  metadata: {}
76
- post_install_message:
65
+ post_install_message:
77
66
  rdoc_options: []
78
67
  require_paths:
79
68
  - lib
@@ -81,16 +70,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
81
70
  requirements:
82
71
  - - ">="
83
72
  - !ruby/object:Gem::Version
84
- version: '0'
73
+ version: '3.2'
85
74
  required_rubygems_version: !ruby/object:Gem::Requirement
86
75
  requirements:
87
76
  - - ">="
88
77
  - !ruby/object:Gem::Version
89
78
  version: '0'
90
79
  requirements: []
91
- rubyforge_project:
92
- rubygems_version: 2.5.1
93
- signing_key:
80
+ rubygems_version: 3.5.22
81
+ signing_key:
94
82
  specification_version: 4
95
83
  summary: Handling range ppoi string
96
84
  test_files: []