jkf 0.5.1 → 0.5.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.envrc +1 -0
- data/.rubocop.yml +10 -0
- data/.yardopts +4 -0
- data/CHANGELOG.md +10 -0
- data/Gemfile +10 -9
- data/README.en.md +26 -21
- data/README.md +29 -20
- data/bench.rb +1 -1
- data/jkf.gemspec +9 -7
- data/lib/jkf/converter/ki2.rb +5 -5
- data/lib/jkf/converter/kif.rb +4 -4
- data/lib/jkf/converter/kifuable.rb +3 -3
- data/lib/jkf/parser/base.rb +1 -1
- data/lib/jkf/parser/csa.rb +1 -1
- data/lib/jkf/version.rb +1 -1
- data/manifest.scm +2 -30
- data/po/all.pot +57 -47
- data/po/en.po +78 -76
- data/po/en.rdoc.po +580 -0
- metadata +16 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 365393f77c09c5ca61d79d520d1e8700449f66b9c5f8dd98f3c533d08b5205d6
|
4
|
+
data.tar.gz: de3a842b9d14005cfff7e9e4d41129b58d0fd9713b91def327e3e579c227498c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 290f7bd7bec9ccf530ae186a6ee5293827be45fb4b9c3e719d355044b00695d3656e62fd47111d7a7c031ed007d369b51f45518ba48b71a9e80b82dba2b093db
|
7
|
+
data.tar.gz: c6d9965c4d109352d9fab43dbc17647ded822e02ea24ff41755194c70f8523d7636b43b04df891e127d070bf235c93a63815749adda2b0780260f66778122442
|
data/.envrc
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
use guix
|
data/.rubocop.yml
CHANGED
@@ -7,6 +7,7 @@ AllCops:
|
|
7
7
|
require:
|
8
8
|
- rubocop-rake
|
9
9
|
- rubocop-rspec
|
10
|
+
- rubocop-performance
|
10
11
|
|
11
12
|
Style/FrozenStringLiteralComment:
|
12
13
|
Enabled: true
|
@@ -63,3 +64,12 @@ Style/StringLiterals:
|
|
63
64
|
|
64
65
|
Style/GuardClause:
|
65
66
|
Enabled: true
|
67
|
+
|
68
|
+
Performance/StringInclude:
|
69
|
+
Enabled: true
|
70
|
+
|
71
|
+
Performance/RegexpMatch:
|
72
|
+
Enabled: true
|
73
|
+
|
74
|
+
Performance/MapCompact:
|
75
|
+
Enabled: true
|
data/.yardopts
ADDED
data/CHANGELOG.md
CHANGED
@@ -7,6 +7,16 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
7
7
|
|
8
8
|
## [Unreleased]
|
9
9
|
|
10
|
+
## 0.5.2 - 2024-10-26
|
11
|
+
|
12
|
+
This is a maintenance release.
|
13
|
+
|
14
|
+
### Others
|
15
|
+
|
16
|
+
* Lint with RuboCop performance plugin
|
17
|
+
* Update documentation
|
18
|
+
* Update gem dependencies; RuboCop and RuboCop RSpec.
|
19
|
+
|
10
20
|
## [0.5.1] - 2023-06-24
|
11
21
|
|
12
22
|
### Changed
|
data/Gemfile
CHANGED
@@ -5,17 +5,18 @@ gemspec
|
|
5
5
|
gem 'rake'
|
6
6
|
|
7
7
|
group :development do
|
8
|
-
gem 'redcarpet'
|
9
|
-
gem 'yard'
|
8
|
+
gem 'redcarpet'
|
9
|
+
gem 'yard'
|
10
10
|
|
11
|
-
gem 'guard-rubocop'
|
12
|
-
gem 'rubocop', '~> 1.
|
13
|
-
gem 'rubocop-
|
14
|
-
gem 'rubocop-
|
11
|
+
gem 'guard-rubocop'
|
12
|
+
gem 'rubocop', '~> 1.63'
|
13
|
+
gem 'rubocop-performance'
|
14
|
+
gem 'rubocop-rake', '~> 0.6.0'
|
15
|
+
gem 'rubocop-rspec', '~> 3.1'
|
15
16
|
end
|
16
17
|
|
17
18
|
group :test do
|
18
|
-
gem 'guard-rspec'
|
19
|
-
gem 'rspec', '~> 3.0'
|
20
|
-
gem 'simplecov'
|
19
|
+
gem 'guard-rspec'
|
20
|
+
gem 'rspec', '~> 3.0'
|
21
|
+
gem 'simplecov'
|
21
22
|
end
|
data/README.en.md
CHANGED
@@ -1,37 +1,40 @@
|
|
1
|
-
#
|
1
|
+
# jkf gem
|
2
|
+
|
2
3
|
[![Gem
|
3
4
|
Version](https://badge.fury.io/rb/jkf.svg)](https://badge.fury.io/rb/jkf)
|
4
5
|
[![Build
|
5
6
|
Status](https://travis-ci.org/iyuuya/jkf.svg?branch=master)](https://travis-ci.org/iyuuya/jkf)
|
6
7
|
[![CI](https://github.com/iyuuya/jkf/actions/workflows/ci.yml/badge.svg)](https://github.com/iyuuya/jkf/actions/workflows/ci.yml)
|
7
8
|
|
8
|
-
jkf is a Ruby port of [json-kifu-format][jkf].
|
9
|
-
It supports both of the conversion from KIF
|
10
|
-
|
9
|
+
The jkf gem is a Ruby port of [json-kifu-format (JKF)][jkf].
|
10
|
+
It supports both of the conversion from KIF (see [棋譜ファイル KIF 形式][kakinoki]),
|
11
|
+
KI2, or CSA (see [CSA標準棋譜ファイル形式][csa]) to JKF, and the one from JKF to KIF,
|
12
|
+
KI2, or CSA.
|
11
13
|
|
12
|
-
[
|
14
|
+
[csa]: http://www2.computer-shogi.org/protocol/record_v22.html
|
15
|
+
[jkf]:
|
16
|
+
https://github.com/na2hiro/Kifu-for-JS/tree/master/packages/json-kifu-format
|
17
|
+
[kakinoki]: http://kakinoki.o.oo7.jp/kif_format.html
|
13
18
|
|
14
19
|
## Installation
|
15
20
|
|
16
|
-
If you install this gem to your application (with Bundler), add
|
17
|
-
Gemfile
|
21
|
+
If you install this gem to your application (with [Bundler][bundler]), add
|
22
|
+
this to `Gemfile`.
|
23
|
+
|
24
|
+
[bundler]: https://bundler.io/
|
18
25
|
|
19
26
|
```ruby
|
20
27
|
gem 'jkf'
|
21
28
|
```
|
22
29
|
|
23
|
-
Then run bundle to install this gem.
|
24
|
-
|
25
|
-
$ bundle
|
30
|
+
Then run `bundle` to install this gem.
|
26
31
|
|
27
|
-
Or directly install with gem install command.
|
28
|
-
|
29
|
-
$ gem install jkf
|
32
|
+
Or directly install with `gem install` command.
|
30
33
|
|
31
34
|
## Usage
|
32
35
|
|
33
|
-
This gem has the Parser and the Converter for
|
34
|
-
CSA.
|
36
|
+
This gem has the parser {Jkf::Parser} and the converter {Jkf::Converter} for
|
37
|
+
each formats: KIF, KI2, and CSA.
|
35
38
|
|
36
39
|
```ruby
|
37
40
|
kif_parser = Jkf::Parser::Kif.new
|
@@ -45,8 +48,8 @@ ki2_converter = Jkf::Converter::Ki2.new
|
|
45
48
|
csa_converter = Jkf::Converter::Csa.new
|
46
49
|
```
|
47
50
|
|
48
|
-
|
49
|
-
|
51
|
+
{Jkf::Parser::Base#parse} to convert into JKF.
|
52
|
+
{Jkf::Converter::Base#convert} to convert into each formats from JKF.
|
50
53
|
|
51
54
|
```ruby
|
52
55
|
jkf = kif_parser.parse(kif_str) #=> Hash
|
@@ -62,13 +65,15 @@ csa = csa_converter.convert(jkf) #=> String
|
|
62
65
|
|
63
66
|
## Contributing
|
64
67
|
|
65
|
-
Feel free to report bugs or send pull requests at
|
66
|
-
[
|
68
|
+
Feel free to report bugs or send pull requests at [the GitHub
|
69
|
+
repository][repo].
|
70
|
+
|
71
|
+
[repo]: https://github.com/iyuuya/jkf
|
67
72
|
|
68
73
|
If you work on Guix, run tests by `guix shell`.
|
69
74
|
|
70
75
|
## License
|
71
76
|
|
72
|
-
This gem is
|
73
|
-
License](http://opensource.org/licenses/MIT).
|
77
|
+
This gem is provided under the [MIT License][mit].
|
74
78
|
|
79
|
+
[mit]: http://opensource.org/licenses/MIT
|
data/README.md
CHANGED
@@ -1,30 +1,31 @@
|
|
1
|
-
#
|
1
|
+
# jkf gem
|
2
|
+
|
2
3
|
[![Gem Version](https://badge.fury.io/rb/jkf.svg)](https://badge.fury.io/rb/jkf) [![Build Status](https://travis-ci.org/iyuuya/jkf.svg?branch=master)](https://travis-ci.org/iyuuya/jkf) [![CI](https://github.com/iyuuya/jkf/actions/workflows/ci.yml/badge.svg)](https://github.com/iyuuya/jkf/actions/workflows/ci.yml)
|
3
4
|
|
4
|
-
jkfは[JSON棋譜フォーマット (JKF)][jkf]をRubyに移植したものです。
|
5
|
-
KIF
|
5
|
+
jkf gemは[JSON棋譜フォーマット (JKF)][jkf]をRubyに移植したものです。
|
6
|
+
柿木形式([棋譜ファイル KIF 形式][kakinoki]、KI2)、[CSA標準棋譜ファイル形式][csa]の構文解析とJKFへの変換、JKFからKIF, KI2, CSAへの変換に対応しています。
|
6
7
|
|
8
|
+
[csa]: http://www2.computer-shogi.org/protocol/record_v22.html
|
7
9
|
[jkf]: https://github.com/na2hiro/Kifu-for-JS/tree/master/packages/json-kifu-format
|
10
|
+
[kakinoki]: http://kakinoki.o.oo7.jp/kif_format.html
|
11
|
+
|
12
|
+
## インストール
|
8
13
|
|
9
|
-
|
14
|
+
アプリケーションにインストールする場合([Bundler][bundler]を使用する場合)、`Gemfile`に以下のように記述してください。
|
10
15
|
|
11
|
-
|
16
|
+
[bundler]: https://bundler.io/
|
12
17
|
|
13
18
|
```ruby
|
14
19
|
gem 'jkf'
|
15
20
|
```
|
16
21
|
|
17
|
-
|
18
|
-
|
19
|
-
$ bundle
|
22
|
+
さらに`bundle`コマンドを実行することでインストールできます。
|
20
23
|
|
21
|
-
|
24
|
+
または、`gem install`コマンドを使って直接インストールもできます。
|
22
25
|
|
23
|
-
|
26
|
+
## 使い方
|
24
27
|
|
25
|
-
|
26
|
-
|
27
|
-
KIF, KI2, CSAそれぞれParserとConverterが用意してあります。
|
28
|
+
KIF, KI2, CSAそれぞれ構文解析器 {Jkf::Parser} と変換器 {Jkf::Converter} が用意してあります。
|
28
29
|
|
29
30
|
```ruby
|
30
31
|
kif_parser = Jkf::Parser::Kif.new
|
@@ -38,7 +39,7 @@ ki2_converter = Jkf::Converter::Ki2.new
|
|
38
39
|
csa_converter = Jkf::Converter::Csa.new
|
39
40
|
```
|
40
41
|
|
41
|
-
|
42
|
+
{Jkf::Parser::Base#parse} でJKFへの変換、 {Jkf::Converter::Base#convert} でJKFから各形式へ変換できます。
|
42
43
|
|
43
44
|
```ruby
|
44
45
|
jkf = kif_parser.parse(kif_str) #=> Hash
|
@@ -52,15 +53,23 @@ ki2 = ki2_converter.convert(jkf) #=> String
|
|
52
53
|
csa = csa_converter.convert(jkf) #=> String
|
53
54
|
```
|
54
55
|
|
55
|
-
##
|
56
|
+
## 貢献
|
57
|
+
|
58
|
+
バグレポートやプルリクエストは[GitHubのリポジトリ][repo]でよろしくお願いします。
|
56
59
|
|
57
|
-
|
58
|
-
https://github.com/iyuuya/jkf.
|
60
|
+
[repo]: https://github.com/iyuuya/jkf
|
59
61
|
|
60
62
|
Guixで開発されている場合は`guix shell`で`rake test`によるテスト実行ができます。
|
61
63
|
|
62
|
-
|
64
|
+
翻訳はドキュメントとAPIの2種類があります。
|
65
|
+
APIについてはRDocの国際化の機能を使います。
|
66
|
+
POTファイルの生成には`rdoc --format pot`とします。
|
67
|
+
これにより`doc/rdoc.pot`が生成されます。
|
68
|
+
このPOTファイルから各言語のPOファイルを初期化できます。
|
69
|
+
例えば`msginit -i doc/rdoc.pot -o po/en.rdoc.po --locale en_US.UTF-8`です。
|
70
|
+
|
71
|
+
## 利用許諾
|
63
72
|
|
64
|
-
ライセンスはMITです。
|
65
|
-
[MIT License](http://opensource.org/licenses/MIT).
|
73
|
+
ライセンスは[MIT License][mit]です。
|
66
74
|
|
75
|
+
[mit]: http://opensource.org/licenses/MIT
|
data/bench.rb
CHANGED
data/jkf.gemspec
CHANGED
@@ -5,19 +5,21 @@ require 'jkf/version'
|
|
5
5
|
Gem::Specification.new do |spec|
|
6
6
|
spec.name = 'jkf'
|
7
7
|
spec.version = Jkf::VERSION
|
8
|
-
spec.authors = ['iyuuya']
|
9
|
-
spec.email = ['i.yuuya@gmail.com']
|
8
|
+
spec.authors = ['iyuuya', 'gemmaro']
|
9
|
+
spec.email = ['i.yuuya@gmail.com', 'gemmaro.dev@gmail.com']
|
10
10
|
|
11
|
-
spec.summary = '
|
12
|
-
spec.description = '
|
11
|
+
spec.summary = 'Shogi formats parser and converter'
|
12
|
+
spec.description = 'The jkf gem provides parsers and converters (generaters) for several shogi formats.'
|
13
13
|
spec.homepage = 'https://github.com/iyuuya/jkf'
|
14
14
|
spec.license = 'MIT'
|
15
15
|
|
16
16
|
spec.required_ruby_version = '>= 3.0'
|
17
17
|
|
18
18
|
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
19
|
-
spec.bindir = 'exe'
|
20
|
-
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
21
19
|
spec.require_paths = ['lib']
|
22
|
-
|
20
|
+
|
21
|
+
spec.metadata = {
|
22
|
+
'rubygems_mfa_required' => 'true',
|
23
|
+
'documentation_uri' => 'https://www.rubydoc.info/gems/jkf'
|
24
|
+
}
|
23
25
|
end
|
data/lib/jkf/converter/ki2.rb
CHANGED
@@ -24,20 +24,20 @@ module Jkf
|
|
24
24
|
end
|
25
25
|
|
26
26
|
def convert_header(header)
|
27
|
-
header.
|
27
|
+
header.filter_map do |(key, value)|
|
28
28
|
result = add_header(key, value)
|
29
|
-
if
|
29
|
+
if /\A[先後上下]手\Z/.match?(key)
|
30
30
|
nil
|
31
31
|
else
|
32
32
|
result
|
33
33
|
end
|
34
|
-
end.
|
34
|
+
end.join
|
35
35
|
end
|
36
36
|
|
37
37
|
def add_header(key, value)
|
38
38
|
result = "#{key}:#{value}\n"
|
39
|
-
if
|
40
|
-
if
|
39
|
+
if /\A[先後上下]手\Z/.match?(key)
|
40
|
+
if /[先下]/.match?(key)
|
41
41
|
@header2.unshift result
|
42
42
|
else
|
43
43
|
@header2 << result
|
data/lib/jkf/converter/kif.rb
CHANGED
@@ -25,10 +25,10 @@ module Jkf
|
|
25
25
|
end
|
26
26
|
|
27
27
|
def convert_header(header, jkf)
|
28
|
-
header.
|
28
|
+
header.filter_map do |(key, value)|
|
29
29
|
result = "#{key}:#{value}\n"
|
30
|
-
if
|
31
|
-
if
|
30
|
+
if /\A[先後上下]手\Z/.match?(key)
|
31
|
+
if /[先下]/.match?(key)
|
32
32
|
@header2.unshift result
|
33
33
|
else
|
34
34
|
@header2 << result
|
@@ -39,7 +39,7 @@ module Jkf
|
|
39
39
|
else
|
40
40
|
result
|
41
41
|
end
|
42
|
-
end.
|
42
|
+
end.join
|
43
43
|
end
|
44
44
|
|
45
45
|
def convert_moves(moves, idx = 0)
|
@@ -52,7 +52,7 @@ module Jkf
|
|
52
52
|
end
|
53
53
|
|
54
54
|
def convert_motigoma(pieces)
|
55
|
-
pieces.to_a.reverse.
|
55
|
+
pieces.to_a.reverse.filter_map do |(piece, num)|
|
56
56
|
if num > 0
|
57
57
|
str = csa2kind(piece)
|
58
58
|
if num > 1
|
@@ -62,7 +62,7 @@ module Jkf
|
|
62
62
|
end
|
63
63
|
str
|
64
64
|
end
|
65
|
-
end.
|
65
|
+
end.join(' ') + " \n"
|
66
66
|
end
|
67
67
|
|
68
68
|
def convert_board_piece(piece)
|
@@ -81,7 +81,7 @@ module Jkf
|
|
81
81
|
def convert_special(special, index)
|
82
82
|
result = "まで#{index + 1}手"
|
83
83
|
|
84
|
-
if special == 'TORYO' || special
|
84
|
+
if special == 'TORYO' || special.include?('ILLEGAL')
|
85
85
|
turn = @players[index % 2]
|
86
86
|
result += "で#{turn}手の"
|
87
87
|
result += { 'TORYO' => '勝ち',
|
data/lib/jkf/parser/base.rb
CHANGED
data/lib/jkf/parser/csa.rb
CHANGED
data/lib/jkf/version.rb
CHANGED
data/manifest.scm
CHANGED
@@ -49,34 +49,6 @@ RuboCop when files are modified.")
|
|
49
49
|
(home-page "https://github.com/guard/guard-compat")
|
50
50
|
(license license:expat)))
|
51
51
|
|
52
|
-
(define-public ruby-ruby-dep
|
53
|
-
(package
|
54
|
-
(name "ruby-ruby-dep")
|
55
|
-
(version "1.5.0")
|
56
|
-
(source (origin
|
57
|
-
(method git-fetch)
|
58
|
-
(uri (git-reference
|
59
|
-
(url "https://github.com/e2/ruby_dep")
|
60
|
-
(commit "4e79416a55dff4b3ff50e73c8fbd0455de1e68b7")))
|
61
|
-
(file-name (git-file-name name version))
|
62
|
-
(sha256
|
63
|
-
(base32
|
64
|
-
"0vv2bm4lghh5pl8zi0ihp6hpbp7xlk8d5h888nhxr725in0ypy9x"))))
|
65
|
-
(build-system ruby-build-system)
|
66
|
-
(arguments
|
67
|
-
`(#:test-target "spec"
|
68
|
-
#:tests? #f ;FIXME: needs gem_isolator, but cyclic dependencies
|
69
|
-
))
|
70
|
-
(native-inputs (list ruby-rspec))
|
71
|
-
(synopsis
|
72
|
-
"Creates a version constraint of supported Rubies, suitable for a
|
73
|
-
gemspec file")
|
74
|
-
(description
|
75
|
-
"This package creates a version constraint of supported Rubies,
|
76
|
-
suitable for a gemspec file.")
|
77
|
-
(home-page "https://github.com/e2/ruby_dep")
|
78
|
-
(license license:expat)))
|
79
|
-
|
80
52
|
(define-public ruby-gem-isolator
|
81
53
|
(package
|
82
54
|
(name "ruby-gem-isolator")
|
@@ -96,7 +68,7 @@ suitable for a gemspec file.")
|
|
96
68
|
#:tests? #f ;FIXME: uninitialized constant Pathname
|
97
69
|
))
|
98
70
|
(native-inputs (list ruby-rspec ruby-nenv ruby-rubocop))
|
99
|
-
(propagated-inputs (list ruby-
|
71
|
+
(propagated-inputs (list ruby-dep))
|
100
72
|
(synopsis
|
101
73
|
"Good for testing dependencies of a gem and/or different gem version
|
102
74
|
combinations")
|
@@ -137,7 +109,7 @@ different gem version combinations.")
|
|
137
109
|
ruby-rubocop-rake
|
138
110
|
ruby-rubocop-rspec
|
139
111
|
ruby-rspec
|
140
|
-
ruby-guard-rspec
|
141
112
|
ruby-simplecov
|
142
113
|
ruby-benchmark-ips
|
114
|
+
ruby-rubocop-performance
|
143
115
|
ruby))
|