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 +5 -5
- data/.github/workflows/release.yml +35 -0
- data/.github/workflows/test.yml +22 -0
- data/CLAUDE.md +31 -0
- data/lib/range_ppoi_string/version.rb +1 -1
- data/lib/range_ppoi_string.rb +1 -2
- data/range_ppoi_string.gemspec +4 -3
- metadata +14 -26
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: 949d37eed843fc384a2154ec894f7d5dc5cb8783c11d99fb3854fbbad9178bdd
|
|
4
|
+
data.tar.gz: 1fb40086d81916019858b321caae3a4fbec60b882f23e694c8f23ebbfb7a6b73
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
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` マクロによるパラメタライズドテスト)
|
data/lib/range_ppoi_string.rb
CHANGED
|
@@ -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
|
-
|
|
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
|
data/range_ppoi_string.gemspec
CHANGED
|
@@ -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.
|
|
25
|
-
|
|
26
|
-
spec.add_development_dependency "
|
|
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.
|
|
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:
|
|
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: '
|
|
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: '
|
|
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: '
|
|
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
|
-
|
|
92
|
-
|
|
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: []
|