jkf 0.4.3 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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