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.
@@ -16,7 +16,10 @@ module Jkf::Parser
16
16
  s1 << s2
17
17
  s2 = parse_header
18
18
  end
19
- if s1 != :failed
19
+ if s1 == :failed
20
+ @current_pos = s0
21
+ s0 = :failed
22
+ else
20
23
  s2 = parse_initialboard
21
24
  s2 = nil if s2 == :failed
22
25
  s3 = []
@@ -26,7 +29,10 @@ module Jkf::Parser
26
29
  s4 = parse_header
27
30
  end
28
31
  s4 = parse_moves
29
- if s4 != :failed
32
+ if s4 == :failed
33
+ @current_pos = s0
34
+ s0 = :failed
35
+ else
30
36
  s5 = []
31
37
  s6 = parse_fork
32
38
  while s6 != :failed
@@ -35,13 +41,7 @@ module Jkf::Parser
35
41
  end
36
42
  @reported_pos = s0
37
43
  s0 = transform_root(s1, s2, s3, s4, s5)
38
- else
39
- @current_pos = s0
40
- s0 = :failed
41
44
  end
42
- else
43
- @current_pos = s0
44
- s0 = :failed
45
45
  end
46
46
  s0
47
47
  end
@@ -50,38 +50,36 @@ module Jkf::Parser
50
50
  def parse_header
51
51
  s0 = @current_pos
52
52
  s2 = match_regexp(/^[^*:\r\n]/)
53
- if s2 != :failed
53
+ if s2 == :failed
54
+ s1 = :failed
55
+ else
54
56
  s1 = []
55
57
  while s2 != :failed
56
58
  s1 << s2
57
59
  s2 = match_regexp(/^[^:\r\n]/)
58
60
  end
59
- else
60
- s1 = :failed
61
61
  end
62
- if s1 != :failed
63
- if match_str(":") != :failed
64
- s3 = parse_nonls
65
- s5 = parse_nl
66
- if s5 != :failed
67
- s4 = []
68
- while s5 != :failed
69
- s4 << s5
70
- s5 = parse_nl
71
- end
72
- else
73
- s4 = :failed
74
- end
75
- if s4 != :failed
76
- @reported_pos = s0
77
- s0 = { "k" => s1.join, "v" => s3.join }
78
- else
79
- @current_pos = s0
80
- s0 = :failed
81
- end
62
+ if s1 == :failed
63
+ @current_pos = s0
64
+ s0 = :failed
65
+ elsif match_str(":") != :failed
66
+ s3 = parse_nonls
67
+ s5 = parse_nl
68
+ if s5 == :failed
69
+ s4 = :failed
82
70
  else
71
+ s4 = []
72
+ while s5 != :failed
73
+ s4 << s5
74
+ s5 = parse_nl
75
+ end
76
+ end
77
+ if s4 == :failed
83
78
  @current_pos = s0
84
79
  s0 = :failed
80
+ else
81
+ @reported_pos = s0
82
+ s0 = { "k" => s1.join, "v" => s3.join }
85
83
  end
86
84
  else
87
85
  @current_pos = s0
@@ -95,24 +93,24 @@ module Jkf::Parser
95
93
  def parse_header_teban
96
94
  s0 = @current_pos
97
95
  s1 = parse_turn
98
- if s1 != :failed
96
+ if s1 == :failed
97
+ @current_pos = s0
98
+ :failed
99
+ else
99
100
  s2 = match_str("手番")
100
- if s2 != :failed
101
+ if s2 == :failed
102
+ @current_pos = s0
103
+ :failed
104
+ else
101
105
  s3 = parse_nl
102
- if s3 != :failed
103
- @reported_pos = s0
104
- { "k" => "手番", "v" => s1 }
105
- else
106
+ if s3 == :failed
106
107
  @current_pos = s0
107
108
  :failed
109
+ else
110
+ @reported_pos = s0
111
+ { "k" => "手番", "v" => s1 }
108
112
  end
109
- else
110
- @current_pos = s0
111
- :failed
112
113
  end
113
- else
114
- @current_pos = s0
115
- :failed
116
114
  end
117
115
  end
118
116
 
@@ -120,7 +118,10 @@ module Jkf::Parser
120
118
  def parse_moves
121
119
  s0 = @current_pos
122
120
  s1 = parse_firstboard
123
- if s1 != :failed
121
+ if s1 == :failed
122
+ @current_pos = s0
123
+ s0 = :failed
124
+ else
124
125
  s2 = []
125
126
  s3 = parse_move
126
127
  while s3 != :failed
@@ -135,9 +136,6 @@ module Jkf::Parser
135
136
  tl << { "special" => res } if res && !tl[tl.length - 1]["special"]
136
137
  tl
137
138
  end.call(s1, s2, s3)
138
- else
139
- @current_pos = s0
140
- s0 = :failed
141
139
  end
142
140
  s0
143
141
  end
@@ -161,7 +159,10 @@ module Jkf::Parser
161
159
  def parse_move
162
160
  s0 = @current_pos
163
161
  s1 = parse_line
164
- if s1 != :failed
162
+ if s1 == :failed
163
+ @current_pos = s0
164
+ s0 = :failed
165
+ else
165
166
  s2 = []
166
167
  s3 = parse_comment
167
168
  while s3 != :failed
@@ -183,9 +184,6 @@ module Jkf::Parser
183
184
  ret["comments"] = c if !c.empty?
184
185
  ret
185
186
  end.call(s1, s2)
186
- else
187
- @current_pos = s0
188
- s0 = :failed
189
187
  end
190
188
 
191
189
  s0
@@ -195,14 +193,20 @@ module Jkf::Parser
195
193
  def parse_line
196
194
  s0 = @current_pos
197
195
  s1 = match_regexp(/^[▲△]/)
198
- if s1 != :failed
196
+ if s1 == :failed
197
+ @current_pos = s0
198
+ s0 = :failed
199
+ else
199
200
  s1 = if s1 == "▲"
200
201
  { "color" => 0 }
201
202
  else
202
203
  { "color" => 1 }
203
204
  end
204
205
  s2 = parse_fugou
205
- if s2 != :failed
206
+ if s2 == :failed
207
+ @current_pos = s0
208
+ s0 = :failed
209
+ else
206
210
  s3 = []
207
211
  s4 = parse_nl
208
212
  s4 = match_space if s4 == :failed
@@ -213,13 +217,7 @@ module Jkf::Parser
213
217
  end
214
218
  @reported_pos = s0
215
219
  s0 = s2.merge(s1)
216
- else
217
- @current_pos = s0
218
- s0 = :failed
219
220
  end
220
- else
221
- @current_pos = s0
222
- s0 = :failed
223
221
  end
224
222
  s0
225
223
  end
@@ -228,9 +226,15 @@ module Jkf::Parser
228
226
  def parse_fugou
229
227
  s0 = @current_pos
230
228
  s1 = parse_place
231
- if s1 != :failed
229
+ if s1 == :failed
230
+ @current_pos = s0
231
+ :failed
232
+ else
232
233
  s2 = parse_piece
233
- if s2 != :failed
234
+ if s2 == :failed
235
+ @current_pos = s0
236
+ :failed
237
+ else
234
238
  s3 = parse_soutai
235
239
  s3 = nil if s3 == :failed
236
240
  s4 = parse_dousa
@@ -242,13 +246,7 @@ module Jkf::Parser
242
246
  s6 = nil if s6 == :failed
243
247
  @reported_pos = s0
244
248
  transform_fugou(s1, s2, s3, s4, s5, s6)
245
- else
246
- @current_pos = s0
247
- :failed
248
249
  end
249
- else
250
- @current_pos = s0
251
- :failed
252
250
  end
253
251
  end
254
252
 
@@ -256,28 +254,28 @@ module Jkf::Parser
256
254
  def parse_place
257
255
  s0 = @current_pos
258
256
  s1 = parse_num
259
- if s1 != :failed
257
+ if s1 == :failed
258
+ @current_pos = s0
259
+ s0 = :failed
260
+ else
260
261
  s2 = parse_numkan
261
- if s2 != :failed
262
- @reported_pos = s0
263
- s0 = { "x" => s1, "y" => s2 }
264
- else
262
+ if s2 == :failed
265
263
  @current_pos = s0
266
264
  s0 = :failed
265
+ else
266
+ @reported_pos = s0
267
+ s0 = { "x" => s1, "y" => s2 }
267
268
  end
268
- else
269
- @current_pos = s0
270
- s0 = :failed
271
269
  end
272
270
  if s0 == :failed
273
271
  s0 = @current_pos
274
- if match_regexp("同") != :failed
272
+ if match_regexp("同") == :failed
273
+ @current_pos = s0
274
+ s0 = :failed
275
+ else
275
276
  match_str(" ")
276
277
  @reported_pos = s0
277
278
  s0 = { "same" => true }
278
- else
279
- @current_pos = s0
280
- s0 = :failed
281
279
  end
282
280
  end
283
281
  s0
@@ -296,18 +294,18 @@ module Jkf::Parser
296
294
  # "*" nonls nl
297
295
  def parse_comment
298
296
  s0 = @current_pos
299
- if match_str("*") != :failed
297
+ if match_str("*") == :failed
298
+ @current_pos = s0
299
+ s0 = :failed
300
+ else
300
301
  s2 = parse_nonls
301
- if parse_nl != :failed
302
- @reported_pos = s0
303
- s0 = s2.join
304
- else
302
+ if parse_nl == :failed
305
303
  @current_pos = s0
306
304
  s0 = :failed
305
+ else
306
+ @reported_pos = s0
307
+ s0 = s2.join
307
308
  end
308
- else
309
- @current_pos = s0
310
- s0 = :failed
311
309
  end
312
310
  s0
313
311
  end
@@ -315,35 +313,33 @@ module Jkf::Parser
315
313
  # fork : "変化:" " "* [0-9]+ "手" nl moves
316
314
  def parse_fork
317
315
  s0 = @current_pos
318
- if match_str("変化:") != :failed
316
+ if match_str("変化:") == :failed
317
+ @current_pos = s0
318
+ s0 = :failed
319
+ else
319
320
  match_spaces
320
321
  s3 = match_digits!
321
- if s3 != :failed
322
- if match_str("手") != :failed
323
- if parse_nl != :failed
324
- s6 = parse_moves
325
- if s6 != :failed
326
- @reported_pos = s0
327
- s0 = { "te" => s3.join.to_i, "moves" => s6[1..-1] }
328
- else
329
- @current_pos = s0
330
- s0 = :failed
331
- end
332
- else
322
+ if s3 == :failed
323
+ @current_pos = s0
324
+ s0 = :failed
325
+ elsif match_str("手") != :failed
326
+ if parse_nl == :failed
327
+ @current_pos = s0
328
+ s0 = :failed
329
+ else
330
+ s6 = parse_moves
331
+ if s6 == :failed
333
332
  @current_pos = s0
334
333
  s0 = :failed
334
+ else
335
+ @reported_pos = s0
336
+ s0 = { "te" => s3.join.to_i, "moves" => s6[1..-1] }
335
337
  end
336
- else
337
- @current_pos = s0
338
- s0 = :failed
339
338
  end
340
339
  else
341
340
  @current_pos = s0
342
341
  s0 = :failed
343
342
  end
344
- else
345
- @current_pos = s0
346
- s0 = :failed
347
343
  end
348
344
  s0
349
345
  end