jkf 0.4.2 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.github/workflows/ci.yml +16 -0
- data/.rubocop.yml +7 -1008
- data/.rubocop_todo.yml +452 -3
- data/CHANGELOG.md +46 -0
- data/Gemfile +5 -3
- data/README.en.md +31 -17
- data/README.md +6 -4
- data/Rakefile +5 -0
- data/jkf.gemspec +3 -0
- data/lib/jkf/converter/csa.rb +14 -6
- data/lib/jkf/converter/kif.rb +5 -3
- data/lib/jkf/converter/kifuable.rb +1 -3
- data/lib/jkf/parser/csa.rb +224 -236
- data/lib/jkf/parser/ki2.rb +102 -106
- data/lib/jkf/parser/kif.rb +181 -197
- data/lib/jkf/parser/kifuable.rb +156 -168
- data/lib/jkf/version.rb +1 -1
- data/manifest.scm +142 -0
- data/po/all.pot +170 -0
- data/po/en.po +200 -0
- data/po4a.cfg +11 -0
- metadata +12 -9
- data/.codeclimate.yml +0 -28
- data/.travis.yml +0 -9
data/lib/jkf/parser/csa.rb
CHANGED
@@ -16,11 +16,17 @@ module Jkf::Parser
|
|
16
16
|
# csa2 : version22 information? initialboard moves?
|
17
17
|
def parse_csa2
|
18
18
|
s0 = @current_pos
|
19
|
-
if parse_version22
|
19
|
+
if parse_version22 == :failed
|
20
|
+
@current_pos = s0
|
21
|
+
s0 = :failed
|
22
|
+
else
|
20
23
|
s1 = parse_information
|
21
24
|
s1 = nil if s1 == :failed
|
22
25
|
s2 = parse_initial_board
|
23
|
-
if s2
|
26
|
+
if s2 == :failed
|
27
|
+
@current_pos = s0
|
28
|
+
s0 = :failed
|
29
|
+
else
|
24
30
|
s3 = parse_moves
|
25
31
|
s3 = nil if s3 == :failed
|
26
32
|
@reported_pos = s0
|
@@ -32,13 +38,7 @@ module Jkf::Parser
|
|
32
38
|
end
|
33
39
|
ret
|
34
40
|
end.call(s1, s2, s3)
|
35
|
-
else
|
36
|
-
@current_pos = s0
|
37
|
-
s0 = :failed
|
38
41
|
end
|
39
|
-
else
|
40
|
-
@current_pos = s0
|
41
|
-
s0 = :failed
|
42
42
|
end
|
43
43
|
s0
|
44
44
|
end
|
@@ -48,17 +48,17 @@ module Jkf::Parser
|
|
48
48
|
s0 = @current_pos
|
49
49
|
s1 = parse_comments
|
50
50
|
s2 = match_str("V2.2")
|
51
|
-
if s2
|
51
|
+
if s2 == :failed
|
52
|
+
@current_pos = s0
|
53
|
+
s0 = :failed
|
54
|
+
else
|
52
55
|
s3 = parse_nl
|
53
|
-
if s3
|
54
|
-
s0 = [s1, s2, s3]
|
55
|
-
else
|
56
|
+
if s3 == :failed
|
56
57
|
@current_pos = s0
|
57
58
|
s0 = :failed
|
59
|
+
else
|
60
|
+
s0 = [s1, s2, s3]
|
58
61
|
end
|
59
|
-
else
|
60
|
-
@current_pos = s0
|
61
|
-
s0 = :failed
|
62
62
|
end
|
63
63
|
s0
|
64
64
|
end
|
@@ -69,12 +69,12 @@ module Jkf::Parser
|
|
69
69
|
s1 = parse_players
|
70
70
|
s1 = nil if s1 == :failed
|
71
71
|
s2 = parse_headers
|
72
|
-
if s2
|
73
|
-
@reported_pos = s0
|
74
|
-
s0 = { "players" => s1, "header" => s2 }
|
75
|
-
else
|
72
|
+
if s2 == :failed
|
76
73
|
@current_pos = s0
|
77
74
|
s0 = :failed
|
75
|
+
else
|
76
|
+
@reported_pos = s0
|
77
|
+
s0 = { "players" => s1, "header" => s2 }
|
78
78
|
end
|
79
79
|
s0
|
80
80
|
end
|
@@ -103,38 +103,36 @@ module Jkf::Parser
|
|
103
103
|
def parse_header
|
104
104
|
s0 = @current_pos
|
105
105
|
parse_comments
|
106
|
-
if match_str("$")
|
106
|
+
if match_str("$") == :failed
|
107
|
+
@current_pos = s0
|
108
|
+
s0 = :failed
|
109
|
+
else
|
107
110
|
s4 = match_regexp(/^[^:]/)
|
108
|
-
if s4
|
111
|
+
if s4 == :failed
|
112
|
+
s3 = :failed
|
113
|
+
else
|
109
114
|
s3 = []
|
110
115
|
while s4 != :failed
|
111
116
|
s3 << s4
|
112
117
|
s4 = match_regexp(/^[^:]/)
|
113
118
|
end
|
114
|
-
else
|
115
|
-
s3 = :failed
|
116
119
|
end
|
117
|
-
if s3
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
else
|
124
|
-
@current_pos = s0
|
125
|
-
s0 = :failed
|
126
|
-
end
|
127
|
-
else
|
120
|
+
if s3 == :failed
|
121
|
+
@current_pos = s0
|
122
|
+
s0 = :failed
|
123
|
+
elsif match_str(":") != :failed
|
124
|
+
s4 = parse_nonls
|
125
|
+
if parse_nl == :failed
|
128
126
|
@current_pos = s0
|
129
127
|
s0 = :failed
|
128
|
+
else
|
129
|
+
@reported_pos = s0
|
130
|
+
s0 = { "k" => s3.join, "v" => s4.join }
|
130
131
|
end
|
131
132
|
else
|
132
133
|
@current_pos = s0
|
133
134
|
s0 = :failed
|
134
135
|
end
|
135
|
-
else
|
136
|
-
@current_pos = s0
|
137
|
-
s0 = :failed
|
138
136
|
end
|
139
137
|
s0
|
140
138
|
end
|
@@ -147,7 +145,10 @@ module Jkf::Parser
|
|
147
145
|
s2 = parse_initial_board
|
148
146
|
s2 = nil if s2 == :failed
|
149
147
|
s3 = parse_moves
|
150
|
-
if s3
|
148
|
+
if s3 == :failed
|
149
|
+
@current_pos = s0
|
150
|
+
s0 = :failed
|
151
|
+
else
|
151
152
|
@reported_pos = s0
|
152
153
|
s0 = -> (ply, ini, ms) do
|
153
154
|
ret = { "header" => {}, "initial" => ini, "moves" => ms }
|
@@ -157,9 +158,6 @@ module Jkf::Parser
|
|
157
158
|
end
|
158
159
|
ret
|
159
160
|
end.call(s1, s2, s3)
|
160
|
-
else
|
161
|
-
@current_pos = s0
|
162
|
-
s0 = :failed
|
163
161
|
end
|
164
162
|
s0
|
165
163
|
end
|
@@ -169,34 +167,34 @@ module Jkf::Parser
|
|
169
167
|
s0 = @current_pos
|
170
168
|
parse_comments
|
171
169
|
s2 = @current_pos
|
172
|
-
if match_str("N+")
|
170
|
+
if match_str("N+") == :failed
|
171
|
+
@current_pos = s2
|
172
|
+
s2 = :failed
|
173
|
+
else
|
173
174
|
s4 = parse_nonls
|
174
|
-
if parse_nl
|
175
|
-
@reported_pos = s2
|
176
|
-
s2 = s4
|
177
|
-
else
|
175
|
+
if parse_nl == :failed
|
178
176
|
@current_pos = s2
|
179
177
|
s2 = :failed
|
178
|
+
else
|
179
|
+
@reported_pos = s2
|
180
|
+
s2 = s4
|
180
181
|
end
|
181
|
-
else
|
182
|
-
@current_pos = s2
|
183
|
-
s2 = :failed
|
184
182
|
end
|
185
183
|
s2 = nil if s2 == :failed
|
186
184
|
parse_comments
|
187
185
|
s4 = @current_pos
|
188
|
-
if match_str("N-")
|
186
|
+
if match_str("N-") == :failed
|
187
|
+
@current_pos = s4
|
188
|
+
s4 = :failed
|
189
|
+
else
|
189
190
|
s6 = parse_nonls
|
190
|
-
if parse_nl
|
191
|
-
@reported_pos = s4
|
192
|
-
s4 = s6
|
193
|
-
else
|
191
|
+
if parse_nl == :failed
|
194
192
|
@current_pos = s4
|
195
193
|
s4 = :failed
|
194
|
+
else
|
195
|
+
@reported_pos = s4
|
196
|
+
s4 = s6
|
196
197
|
end
|
197
|
-
else
|
198
|
-
@current_pos = s4
|
199
|
-
s4 = :failed
|
200
198
|
end
|
201
199
|
s4 = nil if s4 == :failed
|
202
200
|
@reported_pos = s0
|
@@ -221,52 +219,56 @@ module Jkf::Parser
|
|
221
219
|
s2 = s3
|
222
220
|
end
|
223
221
|
end
|
224
|
-
if s2
|
222
|
+
if s2 == :failed
|
223
|
+
@current_pos = s0
|
224
|
+
:failed
|
225
|
+
else
|
225
226
|
s3 = parse_komabetsu
|
226
|
-
if s3
|
227
|
+
if s3 == :failed
|
228
|
+
@current_pos = s0
|
229
|
+
:failed
|
230
|
+
else
|
227
231
|
parse_comments
|
228
232
|
s5 = parse_teban
|
229
|
-
if s5
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
data["data"]["
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
:failed
|
244
|
-
end
|
233
|
+
if s5 == :failed
|
234
|
+
@current_pos = s0
|
235
|
+
:failed
|
236
|
+
elsif parse_nl != :failed
|
237
|
+
@reported_pos = s0
|
238
|
+
-> (data, koma, teban) do
|
239
|
+
if data == "NO"
|
240
|
+
data = koma
|
241
|
+
else
|
242
|
+
data["data"]["hands"] = koma["data"]["hands"]
|
243
|
+
end
|
244
|
+
data["data"]["color"] = teban
|
245
|
+
data
|
246
|
+
end.call(s2, s3, s5)
|
245
247
|
else
|
246
248
|
@current_pos = s0
|
247
249
|
:failed
|
248
250
|
end
|
249
|
-
else
|
250
|
-
@current_pos = s0
|
251
|
-
:failed
|
252
251
|
end
|
253
|
-
else
|
254
|
-
@current_pos = s0
|
255
|
-
:failed
|
256
252
|
end
|
257
253
|
end
|
258
254
|
|
259
255
|
# hirate : "PI" xypiece* nl
|
260
256
|
def parse_hirate
|
261
257
|
s0 = @current_pos
|
262
|
-
if match_str("PI")
|
258
|
+
if match_str("PI") == :failed
|
259
|
+
@current_pos = s0
|
260
|
+
s0 = :failed
|
261
|
+
else
|
263
262
|
s2 = []
|
264
263
|
s3 = parse_xy_piece
|
265
264
|
while s3 != :failed
|
266
265
|
s2 << s3
|
267
266
|
s3 = parse_xy_piece
|
268
267
|
end
|
269
|
-
if parse_nl
|
268
|
+
if parse_nl == :failed
|
269
|
+
@current_pos = s0
|
270
|
+
s0 = :failed
|
271
|
+
else
|
270
272
|
@reported_pos = s0
|
271
273
|
s0 = -> (ps) do
|
272
274
|
ret = { "preset" => "OTHER", "data" => { "board" => get_hirate } }
|
@@ -275,13 +277,7 @@ module Jkf::Parser
|
|
275
277
|
end
|
276
278
|
ret
|
277
279
|
end.call(s2)
|
278
|
-
else
|
279
|
-
@current_pos = s0
|
280
|
-
s0 = :failed
|
281
280
|
end
|
282
|
-
else
|
283
|
-
@current_pos = s0
|
284
|
-
s0 = :failed
|
285
281
|
end
|
286
282
|
s0
|
287
283
|
end
|
@@ -290,14 +286,14 @@ module Jkf::Parser
|
|
290
286
|
def parse_ikkatsu
|
291
287
|
s0 = @current_pos
|
292
288
|
s2 = parse_ikkatsu_line
|
293
|
-
if s2
|
289
|
+
if s2 == :failed
|
290
|
+
s1 = :failed
|
291
|
+
else
|
294
292
|
s1 = []
|
295
293
|
while s2 != :failed
|
296
294
|
s1 << s2
|
297
295
|
s2 = parse_ikkatsu_line
|
298
296
|
end
|
299
|
-
else
|
300
|
-
s1 = :failed
|
301
297
|
end
|
302
298
|
if s1 != :failed
|
303
299
|
@reported_pos = s0
|
@@ -320,34 +316,32 @@ module Jkf::Parser
|
|
320
316
|
# ikkatsuline : "P" [1-9] masu+ nl
|
321
317
|
def parse_ikkatsu_line
|
322
318
|
s0 = @current_pos
|
323
|
-
if match_str("P")
|
324
|
-
|
325
|
-
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
|
330
|
-
|
331
|
-
|
332
|
-
|
333
|
-
s3
|
319
|
+
if match_str("P") == :failed
|
320
|
+
@current_pos = s0
|
321
|
+
s0 = :failed
|
322
|
+
elsif match_digit != :failed
|
323
|
+
s4 = parse_masu
|
324
|
+
if s4 == :failed
|
325
|
+
s3 = :failed
|
326
|
+
else
|
327
|
+
s3 = []
|
328
|
+
while s4 != :failed
|
329
|
+
s3 << s4
|
330
|
+
s4 = parse_masu
|
334
331
|
end
|
335
|
-
|
336
|
-
|
337
|
-
|
338
|
-
|
339
|
-
|
340
|
-
|
341
|
-
|
342
|
-
s0 = :failed
|
343
|
-
end
|
344
|
-
else
|
332
|
+
end
|
333
|
+
if s3 == :failed
|
334
|
+
@current_pos = s0
|
335
|
+
s0 = :failed
|
336
|
+
else
|
337
|
+
s4 = parse_nl
|
338
|
+
if s4 == :failed
|
345
339
|
@current_pos = s0
|
346
340
|
s0 = :failed
|
341
|
+
else
|
342
|
+
@reported_pos = s0
|
343
|
+
s0 = s3
|
347
344
|
end
|
348
|
-
else
|
349
|
-
@current_pos = s0
|
350
|
-
s0 = :failed
|
351
345
|
end
|
352
346
|
else
|
353
347
|
@current_pos = s0
|
@@ -360,18 +354,18 @@ module Jkf::Parser
|
|
360
354
|
def parse_masu
|
361
355
|
s0 = @current_pos
|
362
356
|
s1 = parse_teban
|
363
|
-
if s1
|
357
|
+
if s1 == :failed
|
358
|
+
@current_pos = s0
|
359
|
+
s0 = :failed
|
360
|
+
else
|
364
361
|
s2 = parse_piece
|
365
|
-
if s2
|
366
|
-
@reported_pos = s0
|
367
|
-
s0 = { "color" => s1, "kind" => s2 }
|
368
|
-
else
|
362
|
+
if s2 == :failed
|
369
363
|
@current_pos = s0
|
370
364
|
s0 = :failed
|
365
|
+
else
|
366
|
+
@reported_pos = s0
|
367
|
+
s0 = { "color" => s1, "kind" => s2 }
|
371
368
|
end
|
372
|
-
else
|
373
|
-
@current_pos = s0
|
374
|
-
s0 = :failed
|
375
369
|
end
|
376
370
|
if s0 == :failed
|
377
371
|
s0 = @current_pos
|
@@ -400,38 +394,36 @@ module Jkf::Parser
|
|
400
394
|
# komabetsuline : "P" teban xypiece+ nl
|
401
395
|
def parse_komabetsu_line
|
402
396
|
s0 = @current_pos
|
403
|
-
if match_str("P")
|
397
|
+
if match_str("P") == :failed
|
398
|
+
@current_pos = s0
|
399
|
+
s0 = :failed
|
400
|
+
else
|
404
401
|
s2 = parse_teban
|
405
|
-
if s2
|
402
|
+
if s2 == :failed
|
403
|
+
@current_pos = s0
|
404
|
+
s0 = :failed
|
405
|
+
else
|
406
406
|
s4 = parse_xy_piece
|
407
|
-
if s4
|
407
|
+
if s4 == :failed
|
408
|
+
s3 = :failed
|
409
|
+
else
|
408
410
|
s3 = []
|
409
411
|
while s4 != :failed
|
410
412
|
s3 << s4
|
411
413
|
s4 = parse_xy_piece
|
412
414
|
end
|
413
|
-
else
|
414
|
-
s3 = :failed
|
415
415
|
end
|
416
|
-
if s3
|
417
|
-
|
418
|
-
|
419
|
-
|
420
|
-
|
421
|
-
|
422
|
-
s0 = :failed
|
423
|
-
end
|
416
|
+
if s3 == :failed
|
417
|
+
@current_pos = s0
|
418
|
+
s0 = :failed
|
419
|
+
elsif parse_nl != :failed
|
420
|
+
@reported_pos = s0
|
421
|
+
s0 = { "teban" => s2, "pieces" => s3 }
|
424
422
|
else
|
425
423
|
@current_pos = s0
|
426
424
|
s0 = :failed
|
427
425
|
end
|
428
|
-
else
|
429
|
-
@current_pos = s0
|
430
|
-
s0 = :failed
|
431
426
|
end
|
432
|
-
else
|
433
|
-
@current_pos = s0
|
434
|
-
s0 = :failed
|
435
427
|
end
|
436
428
|
s0
|
437
429
|
end
|
@@ -440,7 +432,10 @@ module Jkf::Parser
|
|
440
432
|
def parse_moves
|
441
433
|
s0 = @current_pos
|
442
434
|
s1 = parse_firstboard
|
443
|
-
if s1
|
435
|
+
if s1 == :failed
|
436
|
+
@current_pos = s0
|
437
|
+
s0 = :failed
|
438
|
+
else
|
444
439
|
s2 = []
|
445
440
|
s3 = parse_move
|
446
441
|
while s3 != :failed
|
@@ -450,9 +445,6 @@ module Jkf::Parser
|
|
450
445
|
parse_comments
|
451
446
|
@reported_pos = s0
|
452
447
|
s0 = s2.unshift(s1)
|
453
|
-
else
|
454
|
-
@current_pos = s0
|
455
|
-
s0 = :failed
|
456
448
|
end
|
457
449
|
s0
|
458
450
|
end
|
@@ -470,7 +462,10 @@ module Jkf::Parser
|
|
470
462
|
s0 = @current_pos
|
471
463
|
s1 = parse_normal_move
|
472
464
|
s1 = parse_special_move if s1 == :failed
|
473
|
-
if s1
|
465
|
+
if s1 == :failed
|
466
|
+
@current_pos = s0
|
467
|
+
s0 = :failed
|
468
|
+
else
|
474
469
|
s2 = parse_time
|
475
470
|
s2 = nil if s2 == :failed
|
476
471
|
s3 = parse_comments
|
@@ -486,9 +481,6 @@ module Jkf::Parser
|
|
486
481
|
end
|
487
482
|
ret
|
488
483
|
end.call(s1, s2, s3)
|
489
|
-
else
|
490
|
-
@current_pos = s0
|
491
|
-
s0 = :failed
|
492
484
|
end
|
493
485
|
s0
|
494
486
|
end
|
@@ -497,39 +489,37 @@ module Jkf::Parser
|
|
497
489
|
def parse_normal_move
|
498
490
|
s0 = @current_pos
|
499
491
|
s1 = parse_teban
|
500
|
-
if s1
|
492
|
+
if s1 == :failed
|
493
|
+
@current_pos = s0
|
494
|
+
s0 = :failed
|
495
|
+
else
|
501
496
|
s2 = parse_xy
|
502
|
-
if s2
|
497
|
+
if s2 == :failed
|
498
|
+
@current_pos = s0
|
499
|
+
s0 = :failed
|
500
|
+
else
|
503
501
|
s3 = parse_xy
|
504
|
-
if s3
|
502
|
+
if s3 == :failed
|
503
|
+
@current_pos = s0
|
504
|
+
s0 = :failed
|
505
|
+
else
|
505
506
|
s4 = parse_piece
|
506
|
-
if s4
|
507
|
-
|
508
|
-
|
509
|
-
|
510
|
-
|
511
|
-
|
512
|
-
|
513
|
-
|
514
|
-
|
515
|
-
|
516
|
-
s0 = :failed
|
517
|
-
end
|
507
|
+
if s4 == :failed
|
508
|
+
@current_pos = s0
|
509
|
+
s0 = :failed
|
510
|
+
elsif parse_nl != :failed
|
511
|
+
@reported_pos = s0
|
512
|
+
s0 = -> (color, from, to, piece) do
|
513
|
+
ret = { "color" => color, "to" => to, "piece" => piece }
|
514
|
+
ret["from"] = from if from["x"] != 0
|
515
|
+
ret
|
516
|
+
end.call(s1, s2, s3, s4)
|
518
517
|
else
|
519
518
|
@current_pos = s0
|
520
519
|
s0 = :failed
|
521
520
|
end
|
522
|
-
else
|
523
|
-
@current_pos = s0
|
524
|
-
s0 = :failed
|
525
521
|
end
|
526
|
-
else
|
527
|
-
@current_pos = s0
|
528
|
-
s0 = :failed
|
529
522
|
end
|
530
|
-
else
|
531
|
-
@current_pos = s0
|
532
|
-
s0 = :failed
|
533
523
|
end
|
534
524
|
s0
|
535
525
|
end
|
@@ -538,32 +528,30 @@ module Jkf::Parser
|
|
538
528
|
def parse_special_move
|
539
529
|
s0 = @current_pos
|
540
530
|
s1 = match_str("%")
|
541
|
-
if s1
|
531
|
+
if s1 == :failed
|
532
|
+
@current_pos = s0
|
533
|
+
s0 = :failed
|
534
|
+
else
|
542
535
|
s3 = match_regexp(/^[\-+_A-Z]/)
|
543
|
-
if s3
|
536
|
+
if s3 == :failed
|
537
|
+
s2 = :failed
|
538
|
+
else
|
544
539
|
s2 = []
|
545
540
|
while s3 != :failed
|
546
541
|
s2 << s3
|
547
542
|
s3 = match_regexp(/^[\-+_A-Z]/)
|
548
543
|
end
|
549
|
-
else
|
550
|
-
s2 = :failed
|
551
544
|
end
|
552
|
-
if s2
|
553
|
-
|
554
|
-
|
555
|
-
|
556
|
-
|
557
|
-
|
558
|
-
s0 = :failed
|
559
|
-
end
|
545
|
+
if s2 == :failed
|
546
|
+
@current_pos = s0
|
547
|
+
s0 = :failed
|
548
|
+
elsif parse_nl != :failed
|
549
|
+
@reported_pos = s0
|
550
|
+
s0 = { "special" => s2.join }
|
560
551
|
else
|
561
552
|
@current_pos = s0
|
562
553
|
s0 = :failed
|
563
554
|
end
|
564
|
-
else
|
565
|
-
@current_pos = s0
|
566
|
-
s0 = :failed
|
567
555
|
end
|
568
556
|
s0
|
569
557
|
end
|
@@ -592,18 +580,18 @@ module Jkf::Parser
|
|
592
580
|
# comment : "'" nonls nl
|
593
581
|
def parse_comment
|
594
582
|
s0 = @current_pos
|
595
|
-
if match_str("'")
|
583
|
+
if match_str("'") == :failed
|
584
|
+
@current_pos = s0
|
585
|
+
:failed
|
586
|
+
else
|
596
587
|
s2 = parse_nonls
|
597
|
-
if parse_nl
|
598
|
-
@reported_pos = s0
|
599
|
-
s2.join
|
600
|
-
else
|
588
|
+
if parse_nl == :failed
|
601
589
|
@current_pos = s0
|
602
590
|
:failed
|
591
|
+
else
|
592
|
+
@reported_pos = s0
|
593
|
+
s2.join
|
603
594
|
end
|
604
|
-
else
|
605
|
-
@current_pos = s0
|
606
|
-
:failed
|
607
595
|
end
|
608
596
|
end
|
609
597
|
|
@@ -621,18 +609,18 @@ module Jkf::Parser
|
|
621
609
|
# time : "T" [0-9]* nl
|
622
610
|
def parse_time
|
623
611
|
s0 = @current_pos
|
624
|
-
if match_str("T")
|
612
|
+
if match_str("T") == :failed
|
613
|
+
@current_pos = s0
|
614
|
+
s0 = :failed
|
615
|
+
else
|
625
616
|
s2 = match_digits
|
626
|
-
if parse_nl
|
627
|
-
@reported_pos = s0
|
628
|
-
s0 = { "now" => sec2time(s2.join.to_i) }
|
629
|
-
else
|
617
|
+
if parse_nl == :failed
|
630
618
|
@current_pos = s0
|
631
619
|
s0 = :failed
|
620
|
+
else
|
621
|
+
@reported_pos = s0
|
622
|
+
s0 = { "now" => sec2time(s2.join.to_i) }
|
632
623
|
end
|
633
|
-
else
|
634
|
-
@current_pos = s0
|
635
|
-
s0 = :failed
|
636
624
|
end
|
637
625
|
s0
|
638
626
|
end
|
@@ -641,18 +629,18 @@ module Jkf::Parser
|
|
641
629
|
def parse_xy
|
642
630
|
s0 = @current_pos
|
643
631
|
s1 = match_digit
|
644
|
-
if s1
|
632
|
+
if s1 == :failed
|
633
|
+
@current_pos = s0
|
634
|
+
s0 = :failed
|
635
|
+
else
|
645
636
|
s2 = match_digit
|
646
|
-
if s2
|
647
|
-
@reported_pos = s0
|
648
|
-
s0 = { "x" => s1.to_i, "y" => s2.to_i }
|
649
|
-
else
|
637
|
+
if s2 == :failed
|
650
638
|
@current_pos = s0
|
651
639
|
s0 = :failed
|
640
|
+
else
|
641
|
+
@reported_pos = s0
|
642
|
+
s0 = { "x" => s1.to_i, "y" => s2.to_i }
|
652
643
|
end
|
653
|
-
else
|
654
|
-
@current_pos = s0
|
655
|
-
s0 = :failed
|
656
644
|
end
|
657
645
|
s0
|
658
646
|
end
|
@@ -661,18 +649,18 @@ module Jkf::Parser
|
|
661
649
|
def parse_piece
|
662
650
|
s0 = @current_pos
|
663
651
|
s1 = match_regexp(/^[A-Z]/)
|
664
|
-
if s1
|
652
|
+
if s1 == :failed
|
653
|
+
@current_pos = s0
|
654
|
+
s0 = :failed
|
655
|
+
else
|
665
656
|
s2 = match_regexp(/^[A-Z]/)
|
666
|
-
if s2
|
667
|
-
@reported_pos = s0
|
668
|
-
s0 = s1 + s2
|
669
|
-
else
|
657
|
+
if s2 == :failed
|
670
658
|
@current_pos = s0
|
671
659
|
s0 = :failed
|
660
|
+
else
|
661
|
+
@reported_pos = s0
|
662
|
+
s0 = s1 + s2
|
672
663
|
end
|
673
|
-
else
|
674
|
-
@current_pos = s0
|
675
|
-
s0 = :failed
|
676
664
|
end
|
677
665
|
s0
|
678
666
|
end
|
@@ -681,18 +669,18 @@ module Jkf::Parser
|
|
681
669
|
def parse_xy_piece
|
682
670
|
s0 = @current_pos
|
683
671
|
s1 = parse_xy
|
684
|
-
if s1
|
672
|
+
if s1 == :failed
|
673
|
+
@current_pos = s0
|
674
|
+
s0 = :failed
|
675
|
+
else
|
685
676
|
s2 = parse_piece
|
686
|
-
if s2
|
687
|
-
@reported_pos = s0
|
688
|
-
s0 = { "xy" => s1, "piece" => s2 }
|
689
|
-
else
|
677
|
+
if s2 == :failed
|
690
678
|
@current_pos = s0
|
691
679
|
s0 = :failed
|
680
|
+
else
|
681
|
+
@reported_pos = s0
|
682
|
+
s0 = { "xy" => s1, "piece" => s2 }
|
692
683
|
end
|
693
|
-
else
|
694
|
-
@current_pos = s0
|
695
|
-
s0 = :failed
|
696
684
|
end
|
697
685
|
s0
|
698
686
|
end
|
@@ -703,21 +691,21 @@ module Jkf::Parser
|
|
703
691
|
s1 = match_str("\r")
|
704
692
|
s1 = nil if s1 == :failed
|
705
693
|
s2 = match_str("\n")
|
706
|
-
if s2
|
707
|
-
s0 = [s1, s2]
|
708
|
-
else
|
694
|
+
if s2 == :failed
|
709
695
|
@current_pos = s0
|
710
696
|
s0 = :failed
|
697
|
+
else
|
698
|
+
s0 = [s1, s2]
|
711
699
|
end
|
712
700
|
if s0 == :failed
|
713
701
|
s0 = @current_pos
|
714
702
|
s1 = match_spaces
|
715
703
|
s2 = match_str(",")
|
716
|
-
if s2
|
717
|
-
s0 = [s1, s2]
|
718
|
-
else
|
704
|
+
if s2 == :failed
|
719
705
|
@current_pos = s0
|
720
706
|
s0 = :failed
|
707
|
+
else
|
708
|
+
s0 = [s1, s2]
|
721
709
|
end
|
722
710
|
end
|
723
711
|
s0
|