jkf 0.5.2 → 0.5.3
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 +4 -4
- data/CHANGELOG.md +4 -0
- data/Gemfile +0 -10
- data/LICENSE.txt +1 -0
- data/README.md +8 -4
- data/jkf.gemspec +5 -3
- data/lib/jkf/converter/base.rb +1 -1
- data/lib/jkf/converter/csa.rb +4 -7
- data/lib/jkf/converter/kif.rb +5 -10
- data/lib/jkf/converter/kifuable.rb +3 -3
- data/lib/jkf/parser/base.rb +1 -1
- data/lib/jkf/parser/csa.rb +281 -286
- data/lib/jkf/parser/ki2.rb +3 -2
- data/lib/jkf/parser/kif.rb +3 -6
- data/lib/jkf/parser/kifuable.rb +2 -2
- data/lib/jkf/version.rb +1 -1
- data/lib/jkf.rb +1 -0
- data/manifest.scm +4 -102
- metadata +20 -13
- data/.github/workflows/ci.yml +0 -16
- data/.hound.yml +0 -3
- data/.rubocop.yml +0 -75
- data/.rubocop_todo.yml +0 -7
- data/Guardfile +0 -27
- data/bin/console +0 -15
- data/bin/setup +0 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9aa24be83e28547743c1bc4c5c12e3b336fe4f448d8cd8f729620c9878a1de42
|
4
|
+
data.tar.gz: bc7e2b1eba4f7f9c970d266cba6f4887444dde261169a0e8d52eb02642802e0b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 86861a9621a3dc7fa5e7c61fbeeb53c5791bc28fc37b53f3b7bbea44e4f85b0489d4c7b9da2e669432861ac007cf25803dc99c14cbd9b667969df43ef4871a97
|
7
|
+
data.tar.gz: 5d2ea1626f6a644760b2ae533fdd5497bd3c5c6e14f73e1001146315008ffd6e5424f5acfe9b0654f8793743baf20a96ca228b8cb42f4b16b8c98b5998868627
|
data/CHANGELOG.md
CHANGED
data/Gemfile
CHANGED
@@ -2,21 +2,11 @@ source 'https://rubygems.org'
|
|
2
2
|
|
3
3
|
gemspec
|
4
4
|
|
5
|
-
gem 'rake'
|
6
|
-
|
7
5
|
group :development do
|
8
|
-
gem 'redcarpet'
|
9
6
|
gem 'yard'
|
10
|
-
|
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'
|
16
7
|
end
|
17
8
|
|
18
9
|
group :test do
|
19
|
-
gem 'guard-rspec'
|
20
10
|
gem 'rspec', '~> 3.0'
|
21
11
|
gem 'simplecov'
|
22
12
|
end
|
data/LICENSE.txt
CHANGED
data/README.md
CHANGED
@@ -1,7 +1,5 @@
|
|
1
1
|
# jkf gem
|
2
2
|
|
3
|
-
[](https://badge.fury.io/rb/jkf) [](https://travis-ci.org/iyuuya/jkf) [](https://github.com/iyuuya/jkf/actions/workflows/ci.yml)
|
4
|
-
|
5
3
|
jkf gemは[JSON棋譜フォーマット (JKF)][jkf]をRubyに移植したものです。
|
6
4
|
柿木形式([棋譜ファイル KIF 形式][kakinoki]、KI2)、[CSA標準棋譜ファイル形式][csa]の構文解析とJKFへの変換、JKFからKIF, KI2, CSAへの変換に対応しています。
|
7
5
|
|
@@ -55,9 +53,9 @@ csa = csa_converter.convert(jkf) #=> String
|
|
55
53
|
|
56
54
|
## 貢献
|
57
55
|
|
58
|
-
バグレポートやプルリクエストは[
|
56
|
+
バグレポートやプルリクエストは[リポジトリ][repo]でよろしくお願いします。
|
59
57
|
|
60
|
-
[repo]: https://
|
58
|
+
[repo]: https://sourceforge.net/p/ruby-jkf/code/
|
61
59
|
|
62
60
|
Guixで開発されている場合は`guix shell`で`rake test`によるテスト実行ができます。
|
63
61
|
|
@@ -68,6 +66,12 @@ POTファイルの生成には`rdoc --format pot`とします。
|
|
68
66
|
このPOTファイルから各言語のPOファイルを初期化できます。
|
69
67
|
例えば`msginit -i doc/rdoc.pot -o po/en.rdoc.po --locale en_US.UTF-8`です。
|
70
68
|
|
69
|
+
## 謝辞
|
70
|
+
|
71
|
+
このプロジェクトは[GitHubのiyuuya/jkf](https://github.com/iyuuya/jkf)を元にしています。
|
72
|
+
そこから[GitHubのgemmaro/jkf](https://github.com/gemmaro/jkf)にフォークされました。
|
73
|
+
現在の開発は[SourceForgeのjkf](https://sourceforge.net/projects/ruby-jkf/)に移っています。
|
74
|
+
|
71
75
|
## 利用許諾
|
72
76
|
|
73
77
|
ライセンスは[MIT License][mit]です。
|
data/jkf.gemspec
CHANGED
@@ -5,12 +5,12 @@ require 'jkf/version'
|
|
5
5
|
Gem::Specification.new do |spec|
|
6
6
|
spec.name = 'jkf'
|
7
7
|
spec.version = Jkf::VERSION
|
8
|
-
spec.authors = [
|
8
|
+
spec.authors = %w[iyuuya gemmaro]
|
9
9
|
spec.email = ['i.yuuya@gmail.com', 'gemmaro.dev@gmail.com']
|
10
10
|
|
11
11
|
spec.summary = 'Shogi formats parser and converter'
|
12
|
-
spec.description = 'The jkf gem provides parsers and converters (generaters) for several shogi formats.'
|
13
|
-
spec.homepage = 'https://
|
12
|
+
spec.description = 'The jkf gem provides parsers and converters (generaters) for several shogi formats, including json-kifu-format, KIF, KI2, and CSA.'
|
13
|
+
spec.homepage = 'https://sourceforge.net/projects/ruby-jkf/'
|
14
14
|
spec.license = 'MIT'
|
15
15
|
|
16
16
|
spec.required_ruby_version = '>= 3.0'
|
@@ -22,4 +22,6 @@ Gem::Specification.new do |spec|
|
|
22
22
|
'rubygems_mfa_required' => 'true',
|
23
23
|
'documentation_uri' => 'https://www.rubydoc.info/gems/jkf'
|
24
24
|
}
|
25
|
+
|
26
|
+
spec.add_development_dependency "rake"
|
25
27
|
end
|
data/lib/jkf/converter/base.rb
CHANGED
data/lib/jkf/converter/csa.rb
CHANGED
@@ -16,12 +16,8 @@ module Jkf
|
|
16
16
|
|
17
17
|
def convert_information(header)
|
18
18
|
result = ''
|
19
|
-
if header['先手'] || header['下手']
|
20
|
-
|
21
|
-
end
|
22
|
-
if header['後手'] || header['上手']
|
23
|
-
result += 'N-' + (header.delete('後手') || header.delete('上手') || '') + "\n"
|
24
|
-
end
|
19
|
+
result += 'N+' + (header.delete('先手') || header.delete('下手') || '') + "\n" if header['先手'] || header['下手']
|
20
|
+
result += 'N-' + (header.delete('後手') || header.delete('上手') || '') + "\n" if header['後手'] || header['上手']
|
25
21
|
header.each { |(k, v)| result += "$#{csa_header_key(k)}:#{v}\n" }
|
26
22
|
result
|
27
23
|
end
|
@@ -60,6 +56,7 @@ module Jkf
|
|
60
56
|
before_pos = nil
|
61
57
|
moves.each do |move|
|
62
58
|
next if move == {}
|
59
|
+
|
63
60
|
result += convert_move(move['move'], before_pos) if move['move']
|
64
61
|
result += convert_special(move['special'], move['color']) if move['special']
|
65
62
|
if move['time']
|
@@ -144,7 +141,7 @@ module Jkf
|
|
144
141
|
end
|
145
142
|
|
146
143
|
def pos2str(pos)
|
147
|
-
'%d%d'
|
144
|
+
format('%d%d', pos['x'], pos['y'])
|
148
145
|
end
|
149
146
|
|
150
147
|
def version
|
data/lib/jkf/converter/kif.rb
CHANGED
@@ -57,7 +57,7 @@ module Jkf
|
|
57
57
|
end
|
58
58
|
|
59
59
|
def convert_move_line(move, index)
|
60
|
-
result = '%4d '
|
60
|
+
result = format('%4d ', index)
|
61
61
|
result += convert_move(move['move'])
|
62
62
|
result += convert_time(move['time']) if move['time']
|
63
63
|
result += '+' if move['forks']
|
@@ -65,7 +65,7 @@ module Jkf
|
|
65
65
|
end
|
66
66
|
|
67
67
|
def convert_special_line(move, index)
|
68
|
-
result = '%4d '
|
68
|
+
result = format('%4d ', index)
|
69
69
|
result += ljust(special2kan(move['special']), 13)
|
70
70
|
result += convert_time(move['time']) if move['time']
|
71
71
|
result += '+' if move['forks']
|
@@ -85,13 +85,8 @@ module Jkf
|
|
85
85
|
end
|
86
86
|
|
87
87
|
def convert_time(time)
|
88
|
-
'(%2d:%02d/%02d:%02d:%02d)'
|
89
|
-
|
90
|
-
time['now']['s'],
|
91
|
-
time['total']['h'],
|
92
|
-
time['total']['m'],
|
93
|
-
time['total']['s']
|
94
|
-
]
|
88
|
+
format('(%2d:%02d/%02d:%02d:%02d)', time['now']['m'], time['now']['s'], time['total']['h'], time['total']['m'],
|
89
|
+
time['total']['s'])
|
95
90
|
end
|
96
91
|
|
97
92
|
def special2kan(special)
|
@@ -119,7 +114,7 @@ module Jkf
|
|
119
114
|
end
|
120
115
|
|
121
116
|
def pos2str(pos)
|
122
|
-
'%d%d'
|
117
|
+
format('%d%d', pos['x'], pos['y'])
|
123
118
|
end
|
124
119
|
end
|
125
120
|
end
|
@@ -115,7 +115,7 @@ module Jkf
|
|
115
115
|
|
116
116
|
def convert_forks(forks, index)
|
117
117
|
result = "\n"
|
118
|
-
result = "変化:%4d手\n"
|
118
|
+
result = format("変化:%4d手\n", index) # ki2の場合\nなし
|
119
119
|
forks.each do |moves|
|
120
120
|
result += convert_moves(moves, index)
|
121
121
|
end
|
@@ -131,9 +131,9 @@ module Jkf
|
|
131
131
|
players_flag = :sengo
|
132
132
|
jkf['header']&.keys&.detect { |key| key =~ /[上下]手/ } && players_flag = :uwasimo
|
133
133
|
@players = if players_flag == :uwasimo
|
134
|
-
[
|
134
|
+
%w[下 上]
|
135
135
|
else
|
136
|
-
[
|
136
|
+
%w[先 後]
|
137
137
|
end
|
138
138
|
end
|
139
139
|
|