jkf 0.4.2 → 0.5.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.
@@ -35,7 +35,10 @@ module Jkf::Parser
35
35
  end
36
36
  parse_split
37
37
  s6 = parse_moves
38
- if s6 != :failed
38
+ if s6 == :failed
39
+ @current_pos = s0
40
+ s0 = :failed
41
+ else
39
42
  s7 = []
40
43
  s8 = parse_fork
41
44
  while s8 != :failed
@@ -45,9 +48,6 @@ module Jkf::Parser
45
48
  parse_nl
46
49
  @reported_pos = s0
47
50
  s0 = transform_root(s2, s3, s4, s6, s7)
48
- else
49
- @current_pos = s0
50
- s0 = :failed
51
51
  end
52
52
 
53
53
  s0
@@ -59,29 +59,27 @@ module Jkf::Parser
59
59
  def parse_header
60
60
  s0 = @current_pos
61
61
  s2 = match_regexp(/^[^:\r\n]/)
62
- if s2 != :failed
62
+ if s2 == :failed
63
+ s1 = :failed
64
+ else
63
65
  s1 = []
64
66
  while s2 != :failed
65
67
  s1 << s2
66
68
  s2 = match_regexp(/^[^:\r\n]/)
67
69
  end
68
- else
69
- s1 = :failed
70
70
  end
71
- if s1 != :failed
72
- if match_str(":") != :failed
73
- s3 = parse_nonls
74
- if parse_nl != :failed
75
- @reported_pos = s0
76
- s1 = { "k" => s1.join, "v" => s3.join }
77
- s0 = s1
78
- else
79
- @current_pos = s0
80
- s0 = :failed
81
- end
82
- else
71
+ if s1 == :failed
72
+ @current_pos = s0
73
+ s0 = :failed
74
+ elsif match_str(":") != :failed
75
+ s3 = parse_nonls
76
+ if parse_nl == :failed
83
77
  @current_pos = s0
84
78
  s0 = :failed
79
+ else
80
+ @reported_pos = s0
81
+ s1 = { "k" => s1.join, "v" => s3.join }
82
+ s0 = s1
85
83
  end
86
84
  else
87
85
  @current_pos = s0
@@ -90,18 +88,16 @@ module Jkf::Parser
90
88
  if s0 == :failed
91
89
  s0 = @current_pos
92
90
  s1 = parse_turn
93
- if s1 != :failed
94
- if match_str("手番") != :failed
95
- if parse_nl != :failed
96
- @reported_pos = s0
97
- s0 = { "k" => "手番", "v" => s1 }
98
- else
99
- @current_pos = s0
100
- s0 = :failed
101
- end
102
- else
91
+ if s1 == :failed
92
+ @current_pos = s0
93
+ s0 = :failed
94
+ elsif match_str("手番") != :failed
95
+ if parse_nl == :failed
103
96
  @current_pos = s0
104
97
  s0 = :failed
98
+ else
99
+ @reported_pos = s0
100
+ s0 = { "k" => "手番", "v" => s1 }
105
101
  end
106
102
  else
107
103
  @current_pos = s0
@@ -109,14 +105,12 @@ module Jkf::Parser
109
105
  end
110
106
  if s0 == :failed
111
107
  s0 = @current_pos
112
- if match_str("盤面回転") != :failed
113
- if parse_nl != :failed
114
- @reported_pos = s0
115
- s0 = nil
116
- else
117
- @current_pos = s0
118
- s0 = :failed
119
- end
108
+ if match_str("盤面回転") == :failed
109
+ @current_pos = s0
110
+ s0 = :failed
111
+ elsif parse_nl != :failed
112
+ @reported_pos = s0
113
+ s0 = nil
120
114
  else
121
115
  @current_pos = s0
122
116
  s0 = :failed
@@ -136,19 +130,19 @@ module Jkf::Parser
136
130
  def parse_split
137
131
  s0 = @current_pos
138
132
  s1 = match_str("手数----指手--")
139
- if s1 != :failed
133
+ if s1 == :failed
134
+ @current_pos = s0
135
+ s0 = :failed
136
+ else
140
137
  s2 = match_str("-------消費時間--")
141
138
  s2 = nil if s2 == :failed
142
139
  s3 = parse_nl
143
- if s3 != :failed
144
- s0 = [s1, s2, s3]
145
- else
140
+ if s3 == :failed
146
141
  @current_pos = s0
147
142
  s0 = :failed
143
+ else
144
+ s0 = [s1, s2, s3]
148
145
  end
149
- else
150
- @current_pos = s0
151
- s0 = :failed
152
146
  end
153
147
  s0
154
148
  end
@@ -157,7 +151,10 @@ module Jkf::Parser
157
151
  def parse_moves
158
152
  s0 = @current_pos
159
153
  s1 = parse_firstboard
160
- if s1 != :failed
154
+ if s1 == :failed
155
+ @current_pos = s0
156
+ s0 = :failed
157
+ else
161
158
  parse_split
162
159
  s2 = []
163
160
  s3 = parse_move
@@ -168,9 +165,6 @@ module Jkf::Parser
168
165
  parse_result
169
166
  @reported_pos = s0
170
167
  s0 = s2.unshift(s1)
171
- else
172
- @current_pos = s0
173
- s0 = :failed
174
168
  end
175
169
  s0
176
170
  end
@@ -194,7 +188,10 @@ module Jkf::Parser
194
188
  def parse_move
195
189
  s0 = @current_pos
196
190
  s1 = parse_line
197
- if s1 != :failed
191
+ if s1 == :failed
192
+ @current_pos = s0
193
+ s0 = :failed
194
+ else
198
195
  s2 = []
199
196
  s3 = parse_comment
200
197
  while s3 != :failed
@@ -204,9 +201,6 @@ module Jkf::Parser
204
201
  parse_pointer
205
202
  @reported_pos = s0
206
203
  s0 = transform_move(s1, s2)
207
- else
208
- @current_pos = s0
209
- s0 = :failed
210
204
  end
211
205
  s0
212
206
  end
@@ -216,22 +210,25 @@ module Jkf::Parser
216
210
  s0 = @current_pos
217
211
  match_spaces
218
212
  s2 = parse_te
219
- if s2 != :failed
213
+ if s2 == :failed
214
+ @current_pos = s0
215
+ s0 = :failed
216
+ else
220
217
  match_spaces
221
218
  s4 = @current_pos
222
219
  s5 = parse_fugou
223
- if s5 != :failed
220
+ if s5 == :failed
221
+ @current_pos = s4
222
+ s4 = :failed
223
+ else
224
224
  s6 = parse_from
225
- if s6 != :failed
226
- @reported_pos = s4
227
- s4 = transform_teban_fugou_from(s2, s5, s6)
228
- else
225
+ if s6 == :failed
229
226
  @current_pos = s4
230
227
  s4 = :failed
228
+ else
229
+ @reported_pos = s4
230
+ s4 = transform_teban_fugou_from(s2, s5, s6)
231
231
  end
232
- else
233
- @current_pos = s4
234
- s4 = :failed
235
232
  end
236
233
  if s4 == :failed
237
234
  s4 = @current_pos
@@ -244,25 +241,22 @@ module Jkf::Parser
244
241
  @reported_pos = s4
245
242
  s4 = s5.join
246
243
  end
247
- if s4 != :failed
244
+ if s4 == :failed
245
+ @current_pos = s0
246
+ s0 = :failed
247
+ else
248
248
  match_spaces
249
249
  s6 = parse_time
250
250
  s6 = nil if s6 == :failed
251
251
  match_str("+")
252
- if parse_nl != :failed
253
- @reported_pos = s0
254
- s0 = { "move" => s4, "time" => s6 }
255
- else
252
+ if parse_nl == :failed
256
253
  @current_pos = s0
257
254
  s0 = :failed
255
+ else
256
+ @reported_pos = s0
257
+ s0 = { "move" => s4, "time" => s6 }
258
258
  end
259
- else
260
- @current_pos = s0
261
- s0 = :failed
262
259
  end
263
- else
264
- @current_pos = s0
265
- s0 = :failed
266
260
  end
267
261
  s0
268
262
  end
@@ -276,20 +270,20 @@ module Jkf::Parser
276
270
  def parse_fugou
277
271
  s0 = @current_pos
278
272
  s1 = parse_place
279
- if s1 != :failed
273
+ if s1 == :failed
274
+ @current_pos = s0
275
+ s0 = :failed
276
+ else
280
277
  s2 = parse_piece
281
- if s2 != :failed
278
+ if s2 == :failed
279
+ @current_pos = s0
280
+ s0 = :failed
281
+ else
282
282
  s3 = match_str("成")
283
283
  s3 = nil if s3 == :failed
284
284
  @reported_pos = s0
285
285
  s0 = { "to" => s1, "piece" => s2, "promote" => !!s3 }
286
- else
287
- @current_pos = s0
288
- s0 = :failed
289
286
  end
290
- else
291
- @current_pos = s0
292
- s0 = :failed
293
287
  end
294
288
  s0
295
289
  end
@@ -298,18 +292,18 @@ module Jkf::Parser
298
292
  def parse_place
299
293
  s0 = @current_pos
300
294
  s1 = parse_num
301
- if s1 != :failed
295
+ if s1 == :failed
296
+ @current_pos = s0
297
+ s0 = :failed
298
+ else
302
299
  s2 = parse_numkan
303
- if s2 != :failed
304
- @reported_pos = s0
305
- s0 = { "x" => s1, "y" => s2 }
306
- else
300
+ if s2 == :failed
307
301
  @current_pos = s0
308
302
  s0 = :failed
303
+ else
304
+ @reported_pos = s0
305
+ s0 = { "x" => s1, "y" => s2 }
309
306
  end
310
- else
311
- @current_pos = s0
312
- s0 = :failed
313
307
  end
314
308
  if s0 == :failed
315
309
  s0 = @current_pos
@@ -334,29 +328,27 @@ module Jkf::Parser
334
328
  s0 = s1
335
329
  if s0 == :failed
336
330
  s0 = @current_pos
337
- if match_str("(") != :failed
331
+ if match_str("(") == :failed
332
+ @current_pos = s0
333
+ s0 = :failed
334
+ else
338
335
  s2 = match_regexp(/^[1-9]/)
339
- if s2 != :failed
336
+ if s2 == :failed
337
+ @current_pos = s0
338
+ s0 = :failed
339
+ else
340
340
  s3 = match_regexp(/^[1-9]/)
341
- if s3 != :failed
342
- if match_str(")") != :failed
343
- @reported_pos = s0
344
- s0 = { "x" => s2.to_i, "y" => s3.to_i }
345
- else
346
- @current_pos = s0
347
- s0 = :failed
348
- end
341
+ if s3 == :failed
342
+ @current_pos = s0
343
+ s0 = :failed
344
+ elsif match_str(")") != :failed
345
+ @reported_pos = s0
346
+ s0 = { "x" => s2.to_i, "y" => s3.to_i }
349
347
  else
350
348
  @current_pos = s0
351
349
  s0 = :failed
352
350
  end
353
- else
354
- @current_pos = s0
355
- s0 = :failed
356
351
  end
357
- else
358
- @current_pos = s0
359
- s0 = :failed
360
352
  end
361
353
  end
362
354
  s0
@@ -365,39 +357,39 @@ module Jkf::Parser
365
357
  # time : "(" " "* ms " "* "/" " "* (hms | ms) " "* ")"
366
358
  def parse_time
367
359
  s0 = @current_pos
368
- if match_str("(") != :failed
360
+ if match_str("(") == :failed
361
+ @current_pos = s0
362
+ s0 = :failed
363
+ else
369
364
  match_spaces
370
365
  s3 = parse_ms
371
- if s3 != :failed
366
+ if s3 == :failed
367
+ @current_pos = s0
368
+ s0 = :failed
369
+ else
372
370
  match_spaces
373
- if match_str("/") != :failed
371
+ if match_str("/") == :failed
372
+ @current_pos = s0
373
+ s0 = :failed
374
+ else
374
375
  match_spaces
375
376
  s5 = parse_hms
376
377
  s5 = parse_ms(with_hour: true) if s5 == :failed
377
- if s5 != :failed
378
+ if s5 == :failed
379
+ @current_pos = s0
380
+ s0 = :failed
381
+ else
378
382
  match_spaces
379
- if match_str(")") != :failed
380
- @reported_pos = s0
381
- s0 = { "now" => s3, "total" => s5 }
382
- else
383
+ if match_str(")") == :failed
383
384
  @current_pos = s0
384
385
  s0 = :failed
386
+ else
387
+ @reported_pos = s0
388
+ s0 = { "now" => s3, "total" => s5 }
385
389
  end
386
- else
387
- @current_pos = s0
388
- s0 = :failed
389
390
  end
390
- else
391
- @current_pos = s0
392
- s0 = :failed
393
391
  end
394
- else
395
- @current_pos = s0
396
- s0 = :failed
397
392
  end
398
- else
399
- @current_pos = s0
400
- s0 = :failed
401
393
  end
402
394
  s0
403
395
  end
@@ -407,26 +399,22 @@ module Jkf::Parser
407
399
  s0 = @current_pos
408
400
  s1 = match_digits!
409
401
 
410
- if s1 != :failed
411
- if match_str(":") != :failed
412
- s3 = match_digits!
413
- if s3 != :failed
414
- if match_str(":") != :failed
415
- s5 = match_digits!
416
- if s5 != :failed
417
- @reported_pos = s0
418
- s0 = { "h" => s1.join.to_i, "m" => s3.join.to_i, "s" => s5.join.to_i }
419
- else
420
- @current_pos = s0
421
- s0 = :failed
422
- end
423
- else
424
- @current_pos = s0
425
- s0 = :failed
426
- end
427
- else
402
+ if s1 == :failed
403
+ @current_pos = s0
404
+ s0 = :failed
405
+ elsif match_str(":") != :failed
406
+ s3 = match_digits!
407
+ if s3 == :failed
408
+ @current_pos = s0
409
+ s0 = :failed
410
+ elsif match_str(":") != :failed
411
+ s5 = match_digits!
412
+ if s5 == :failed
428
413
  @current_pos = s0
429
414
  s0 = :failed
415
+ else
416
+ @reported_pos = s0
417
+ s0 = { "h" => s1.join.to_i, "m" => s3.join.to_i, "s" => s5.join.to_i }
430
418
  end
431
419
  else
432
420
  @current_pos = s0
@@ -443,27 +431,25 @@ module Jkf::Parser
443
431
  def parse_ms(with_hour: false)
444
432
  s0 = @current_pos
445
433
  s1 = match_digits!
446
- if s1 != :failed
447
- if match_str(":") != :failed
448
- s3 = match_digits!
449
- if s3 != :failed
450
- @reported_pos = s0
451
- m = s1.join.to_i
452
- s = s3.join.to_i
453
- if with_hour
454
- h = m / 60
455
- m = m % 60
456
- s0 = { "h" => h, "m" => m, "s" => s }
457
- else
458
- s0 = { "m" => m, "s" => s }
459
- end
460
- else
461
- @current_pos = s0
462
- s0 = :failed
463
- end
464
- else
434
+ if s1 == :failed
435
+ @current_pos = s0
436
+ s0 = :failed
437
+ elsif match_str(":") != :failed
438
+ s3 = match_digits!
439
+ if s3 == :failed
465
440
  @current_pos = s0
466
441
  s0 = :failed
442
+ else
443
+ @reported_pos = s0
444
+ m = s1.join.to_i
445
+ s = s3.join.to_i
446
+ if with_hour
447
+ h = m / 60
448
+ m = m % 60
449
+ s0 = { "h" => h, "m" => m, "s" => s }
450
+ else
451
+ s0 = { "m" => m, "s" => s }
452
+ end
467
453
  end
468
454
  else
469
455
  @current_pos = s0
@@ -475,34 +461,34 @@ module Jkf::Parser
475
461
  # comment : "*" nonls nl | "&" nonls nl
476
462
  def parse_comment
477
463
  s0 = @current_pos
478
- if match_str("*") != :failed
464
+ if match_str("*") == :failed
465
+ @current_pos = s0
466
+ s0 = :failed
467
+ else
479
468
  s2 = parse_nonls
480
- if parse_nl != :failed
481
- @reported_pos = s0
482
- s0 = s2.join
483
- else
469
+ if parse_nl == :failed
484
470
  @current_pos = s0
485
471
  s0 = :failed
472
+ else
473
+ @reported_pos = s0
474
+ s0 = s2.join
486
475
  end
487
- else
488
- @current_pos = s0
489
- s0 = :failed
490
476
  end
491
477
  if s0 == :failed
492
478
  s0 = @current_pos
493
479
  s1 = match_str("&")
494
- if s1 != :failed
480
+ if s1 == :failed
481
+ @current_pos = s0
482
+ s0 = :failed
483
+ else
495
484
  s2 = parse_nonls
496
- if parse_nl != :failed
497
- @reported_pos = s0
498
- s0 = "&" + s2.join
499
- else
485
+ if parse_nl == :failed
500
486
  @current_pos = s0
501
487
  s0 = :failed
488
+ else
489
+ @reported_pos = s0
490
+ s0 = "&" + s2.join
502
491
  end
503
- else
504
- @current_pos = s0
505
- s0 = :failed
506
492
  end
507
493
  end
508
494
  s0
@@ -511,35 +497,33 @@ module Jkf::Parser
511
497
  # fork : "変化:" " "* [0-9]+ "手" nl moves
512
498
  def parse_fork
513
499
  s0 = @current_pos
514
- if match_str("変化:") != :failed
500
+ if match_str("変化:") == :failed
501
+ @current_pos = s0
502
+ s0 = :failed
503
+ else
515
504
  match_spaces
516
505
  s3 = parse_te
517
- if s3 != :failed
518
- if match_str("手") != :failed
519
- if parse_nl != :failed
520
- s6 = parse_moves
521
- if s6 != :failed
522
- @reported_pos = s0
523
- s0 = { "te" => s3.join.to_i, "moves" => s6[1..-1] }
524
- else
525
- @current_pos = s0
526
- s0 = :failed
527
- end
528
- else
506
+ if s3 == :failed
507
+ @current_pos = s0
508
+ s0 = :failed
509
+ elsif match_str("手") != :failed
510
+ if parse_nl == :failed
511
+ @current_pos = s0
512
+ s0 = :failed
513
+ else
514
+ s6 = parse_moves
515
+ if s6 == :failed
529
516
  @current_pos = s0
530
517
  s0 = :failed
518
+ else
519
+ @reported_pos = s0
520
+ s0 = { "te" => s3.join.to_i, "moves" => s6[1..-1] }
531
521
  end
532
- else
533
- @current_pos = s0
534
- s0 = :failed
535
522
  end
536
523
  else
537
524
  @current_pos = s0
538
525
  s0 = :failed
539
526
  end
540
- else
541
- @current_pos = s0
542
- s0 = :failed
543
527
  end
544
528
  s0
545
529
  end
@@ -606,7 +590,7 @@ module Jkf::Parser
606
590
 
607
591
  # teban to color
608
592
  def teban2color(teban)
609
- teban = teban.to_i unless teban.is_a? Fixnum
593
+ teban = teban.to_i unless teban.is_a? Integer
610
594
  (teban + 1) % 2
611
595
  end
612
596