dimus-biodiversity 0.0.18 → 0.5.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,23 +1,227 @@
1
+ # encoding: UTF-8
1
2
  module ScientificNameDirty
2
3
  include Treetop::Runtime
3
4
 
4
5
  def root
5
- @root || :composite_scientific_name
6
+ @root || :root
6
7
  end
7
8
 
8
9
  include ScientificNameClean
9
10
 
10
- def _nt_composite_scientific_name
11
+ def _nt_root
11
12
  start_index = index
12
- if node_cache[:composite_scientific_name].has_key?(index)
13
- cached = node_cache[:composite_scientific_name][index]
13
+ if node_cache[:root].has_key?(index)
14
+ cached = node_cache[:root][index]
14
15
  @index = cached.interval.end if cached
15
16
  return cached
16
17
  end
17
18
 
18
19
  r0 = super
19
20
 
20
- node_cache[:composite_scientific_name][start_index] = r0
21
+ node_cache[:root][start_index] = r0
22
+
23
+ return r0
24
+ end
25
+
26
+ module Species0
27
+ def a
28
+ elements[0]
29
+ end
30
+
31
+ def space
32
+ elements[1]
33
+ end
34
+
35
+ def b
36
+ elements[2]
37
+ end
38
+ end
39
+
40
+ module Species1
41
+ def value
42
+ a.value + " " + b.value
43
+ end
44
+
45
+ def canonical
46
+ a.canonical
47
+ end
48
+
49
+ def pos
50
+ a.pos.merge(b.pos)
51
+ end
52
+
53
+ def details
54
+ {:species => a.details[:species].merge(b.details)}
55
+ end
56
+ end
57
+
58
+ def _nt_species
59
+ start_index = index
60
+ if node_cache[:species].has_key?(index)
61
+ cached = node_cache[:species][index]
62
+ @index = cached.interval.end if cached
63
+ return cached
64
+ end
65
+
66
+ i0 = index
67
+ i1, s1 = index, []
68
+ r2 = _nt_species_epitheton
69
+ s1 << r2
70
+ if r2
71
+ r3 = _nt_space
72
+ s1 << r3
73
+ if r3
74
+ r4 = _nt_year
75
+ s1 << r4
76
+ end
77
+ end
78
+ if s1.last
79
+ r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
80
+ r1.extend(Species0)
81
+ r1.extend(Species1)
82
+ else
83
+ self.index = i1
84
+ r1 = nil
85
+ end
86
+ if r1
87
+ r0 = r1
88
+ else
89
+ r5 = super
90
+ if r5
91
+ r0 = r5
92
+ else
93
+ self.index = i0
94
+ r0 = nil
95
+ end
96
+ end
97
+
98
+ node_cache[:species][start_index] = r0
99
+
100
+ return r0
101
+ end
102
+
103
+ module RightParen0
104
+ def space
105
+ elements[1]
106
+ end
107
+
108
+ end
109
+
110
+ def _nt_right_paren
111
+ start_index = index
112
+ if node_cache[:right_paren].has_key?(index)
113
+ cached = node_cache[:right_paren][index]
114
+ @index = cached.interval.end if cached
115
+ return cached
116
+ end
117
+
118
+ i0 = index
119
+ i1, s1 = index, []
120
+ if input.index(")", index) == index
121
+ r2 = instantiate_node(SyntaxNode,input, index...(index + 1))
122
+ @index += 1
123
+ else
124
+ terminal_parse_failure(")")
125
+ r2 = nil
126
+ end
127
+ s1 << r2
128
+ if r2
129
+ r3 = _nt_space
130
+ s1 << r3
131
+ if r3
132
+ if input.index(")", index) == index
133
+ r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
134
+ @index += 1
135
+ else
136
+ terminal_parse_failure(")")
137
+ r4 = nil
138
+ end
139
+ s1 << r4
140
+ end
141
+ end
142
+ if s1.last
143
+ r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
144
+ r1.extend(RightParen0)
145
+ else
146
+ self.index = i1
147
+ r1 = nil
148
+ end
149
+ if r1
150
+ r0 = r1
151
+ else
152
+ r5 = super
153
+ if r5
154
+ r0 = r5
155
+ else
156
+ self.index = i0
157
+ r0 = nil
158
+ end
159
+ end
160
+
161
+ node_cache[:right_paren][start_index] = r0
162
+
163
+ return r0
164
+ end
165
+
166
+ module LeftParen0
167
+ def space
168
+ elements[1]
169
+ end
170
+
171
+ end
172
+
173
+ def _nt_left_paren
174
+ start_index = index
175
+ if node_cache[:left_paren].has_key?(index)
176
+ cached = node_cache[:left_paren][index]
177
+ @index = cached.interval.end if cached
178
+ return cached
179
+ end
180
+
181
+ i0 = index
182
+ i1, s1 = index, []
183
+ if input.index("(", index) == index
184
+ r2 = instantiate_node(SyntaxNode,input, index...(index + 1))
185
+ @index += 1
186
+ else
187
+ terminal_parse_failure("(")
188
+ r2 = nil
189
+ end
190
+ s1 << r2
191
+ if r2
192
+ r3 = _nt_space
193
+ s1 << r3
194
+ if r3
195
+ if input.index("(", index) == index
196
+ r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
197
+ @index += 1
198
+ else
199
+ terminal_parse_failure("(")
200
+ r4 = nil
201
+ end
202
+ s1 << r4
203
+ end
204
+ end
205
+ if s1.last
206
+ r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
207
+ r1.extend(LeftParen0)
208
+ else
209
+ self.index = i1
210
+ r1 = nil
211
+ end
212
+ if r1
213
+ r0 = r1
214
+ else
215
+ r5 = super
216
+ if r5
217
+ r0 = r5
218
+ else
219
+ self.index = i0
220
+ r0 = nil
221
+ end
222
+ end
223
+
224
+ node_cache[:left_paren][start_index] = r0
21
225
 
22
226
  return r0
23
227
  end
@@ -37,15 +241,16 @@ module ScientificNameDirty
37
241
  end
38
242
 
39
243
  module Year1
40
-
41
- def value
42
- a.text_value + " " + b.text_value
43
- end
44
- def pos
45
- {a.interval.begin => ['year', a.interval.end]}.merge(b.pos)
46
- end
47
- def details
48
- {:ambiguous_year => value}
244
+ def value
245
+ a.value + " " + b.value
246
+ end
247
+
248
+ def pos
249
+ a.pos.merge(b.pos)
250
+ end
251
+
252
+ def details
253
+ {:year => a.value, :approximate_year => b.value}
49
254
  end
50
255
  end
51
256
 
@@ -54,23 +259,26 @@ module ScientificNameDirty
54
259
  elements[0]
55
260
  end
56
261
 
57
- def page_number
262
+ def space
58
263
  elements[1]
59
264
  end
265
+
266
+ def page_number
267
+ elements[2]
268
+ end
60
269
  end
61
270
 
62
271
  module Year3
63
-
64
- def value
65
- a.text_value
66
- end
67
-
68
- def pos
69
- {a.interval.begin => ['year', a.interval.end]}
70
- end
71
-
72
- def details
73
- {:year => value}
272
+ def value
273
+ a.text_value
274
+ end
275
+
276
+ def pos
277
+ {a.interval.begin => ['year', a.interval.end]}
278
+ end
279
+
280
+ def details
281
+ {:year => value}
74
282
  end
75
283
  end
76
284
 
@@ -84,33 +292,14 @@ module ScientificNameDirty
84
292
 
85
293
  i0 = index
86
294
  i1, s1 = index, []
87
- s2, i2 = [], index
88
- loop do
89
- if input.index(Regexp.new('[\\d]'), index) == index
90
- r3 = instantiate_node(SyntaxNode,input, index...(index + 1))
91
- @index += 1
92
- else
93
- r3 = nil
94
- end
95
- if r3
96
- s2 << r3
97
- else
98
- break
99
- end
100
- end
101
- if s2.empty?
102
- self.index = i2
103
- r2 = nil
104
- else
105
- r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
106
- end
295
+ r2 = _nt_year_number
107
296
  s1 << r2
108
297
  if r2
109
- r4 = _nt_space
110
- s1 << r4
111
- if r4
112
- r5 = _nt_approximate_year
113
- s1 << r5
298
+ r3 = _nt_space
299
+ s1 << r3
300
+ if r3
301
+ r4 = _nt_approximate_year
302
+ s1 << r4
114
303
  end
115
304
  end
116
305
  if s1.last
@@ -124,54 +313,39 @@ module ScientificNameDirty
124
313
  if r1
125
314
  r0 = r1
126
315
  else
127
- i6, s6 = index, []
128
- s7, i7 = [], index
129
- loop do
130
- if input.index(Regexp.new('[\\d]'), index) == index
131
- r8 = instantiate_node(SyntaxNode,input, index...(index + 1))
132
- @index += 1
133
- else
134
- r8 = nil
135
- end
136
- if r8
137
- s7 << r8
138
- else
139
- break
316
+ i5, s5 = index, []
317
+ r6 = _nt_year_number
318
+ s5 << r6
319
+ if r6
320
+ r7 = _nt_space
321
+ s5 << r7
322
+ if r7
323
+ r8 = _nt_page_number
324
+ s5 << r8
140
325
  end
141
326
  end
142
- if s7.empty?
143
- self.index = i7
144
- r7 = nil
145
- else
146
- r7 = instantiate_node(SyntaxNode,input, i7...index, s7)
147
- end
148
- s6 << r7
149
- if r7
150
- r9 = _nt_page_number
151
- s6 << r9
152
- end
153
- if s6.last
154
- r6 = instantiate_node(SyntaxNode,input, i6...index, s6)
155
- r6.extend(Year2)
156
- r6.extend(Year3)
327
+ if s5.last
328
+ r5 = instantiate_node(SyntaxNode,input, i5...index, s5)
329
+ r5.extend(Year2)
330
+ r5.extend(Year3)
157
331
  else
158
- self.index = i6
159
- r6 = nil
332
+ self.index = i5
333
+ r5 = nil
160
334
  end
161
- if r6
162
- r0 = r6
335
+ if r5
336
+ r0 = r5
163
337
  else
164
- r10 = _nt_double_year
165
- if r10
166
- r0 = r10
338
+ r9 = _nt_approximate_year
339
+ if r9
340
+ r0 = r9
167
341
  else
168
- r11 = _nt_approximate_year
169
- if r11
170
- r0 = r11
342
+ r10 = _nt_double_year
343
+ if r10
344
+ r0 = r10
171
345
  else
172
- r12 = super
173
- if r12
174
- r0 = r12
346
+ r11 = super
347
+ if r11
348
+ r0 = r11
175
349
  else
176
350
  self.index = i0
177
351
  r0 = nil
@@ -187,9 +361,6 @@ module ScientificNameDirty
187
361
  end
188
362
 
189
363
  module ApproximateYear0
190
- end
191
-
192
- module ApproximateYear1
193
364
  def space
194
365
  elements[1]
195
366
  end
@@ -204,18 +375,17 @@ module ScientificNameDirty
204
375
 
205
376
  end
206
377
 
207
- module ApproximateYear2
208
-
209
- def value
210
- "(" + a.text_value + ")"
211
- end
212
-
213
- def pos
214
- {a.interval.begin => ['year', a.interval.end]}
215
- end
216
-
217
- def details
218
- {:approximate_year => value}
378
+ module ApproximateYear1
379
+ def value
380
+ "(" + a.text_value + ")"
381
+ end
382
+
383
+ def pos
384
+ {a.interval.begin => ['year', a.interval.end]}
385
+ end
386
+
387
+ def details
388
+ {:approximate_year => value}
219
389
  end
220
390
  end
221
391
 
@@ -240,97 +410,42 @@ module ScientificNameDirty
240
410
  r2 = _nt_space
241
411
  s0 << r2
242
412
  if r2
243
- i3, s3 = index, []
244
- if input.index(Regexp.new('[\\d]'), index) == index
245
- r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
246
- @index += 1
247
- else
248
- r4 = nil
249
- end
250
- s3 << r4
251
- if r4
252
- if input.index(Regexp.new('[\\d]'), index) == index
253
- r5 = instantiate_node(SyntaxNode,input, index...(index + 1))
254
- @index += 1
255
- else
256
- r5 = nil
257
- end
258
- s3 << r5
259
- if r5
260
- if input.index(Regexp.new('[\\d]'), index) == index
261
- r6 = instantiate_node(SyntaxNode,input, index...(index + 1))
262
- @index += 1
263
- else
264
- r6 = nil
265
- end
266
- s3 << r6
267
- if r6
268
- s7, i7 = [], index
269
- loop do
270
- if input.index(Regexp.new('[\\d\\?]'), index) == index
271
- r8 = instantiate_node(SyntaxNode,input, index...(index + 1))
272
- @index += 1
273
- else
274
- r8 = nil
275
- end
276
- if r8
277
- s7 << r8
278
- else
279
- break
280
- end
281
- end
282
- if s7.empty?
283
- self.index = i7
284
- r7 = nil
285
- else
286
- r7 = instantiate_node(SyntaxNode,input, i7...index, s7)
287
- end
288
- s3 << r7
289
- end
290
- end
291
- end
292
- if s3.last
293
- r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
294
- r3.extend(ApproximateYear0)
295
- else
296
- self.index = i3
297
- r3 = nil
298
- end
413
+ r3 = _nt_year_number
299
414
  s0 << r3
300
415
  if r3
301
- r9 = _nt_space
302
- s0 << r9
303
- if r9
304
- s10, i10 = [], index
416
+ r4 = _nt_space
417
+ s0 << r4
418
+ if r4
419
+ s5, i5 = [], index
305
420
  loop do
306
421
  if input.index("]", index) == index
307
- r11 = instantiate_node(SyntaxNode,input, index...(index + 1))
422
+ r6 = instantiate_node(SyntaxNode,input, index...(index + 1))
308
423
  @index += 1
309
424
  else
310
425
  terminal_parse_failure("]")
311
- r11 = nil
426
+ r6 = nil
312
427
  end
313
- if r11
314
- s10 << r11
428
+ if r6
429
+ s5 << r6
315
430
  else
316
431
  break
317
432
  end
318
433
  end
319
- if s10.empty?
320
- self.index = i10
321
- r10 = nil
434
+ if s5.empty?
435
+ self.index = i5
436
+ r5 = nil
322
437
  else
323
- r10 = instantiate_node(SyntaxNode,input, i10...index, s10)
438
+ r5 = instantiate_node(SyntaxNode,input, i5...index, s5)
324
439
  end
325
- s0 << r10
440
+ s0 << r5
326
441
  end
327
442
  end
328
443
  end
329
444
  end
330
445
  if s0.last
331
446
  r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
447
+ r0.extend(ApproximateYear0)
332
448
  r0.extend(ApproximateYear1)
333
- r0.extend(ApproximateYear2)
334
449
  else
335
450
  self.index = i0
336
451
  r0 = nil
@@ -342,20 +457,23 @@ module ScientificNameDirty
342
457
  end
343
458
 
344
459
  module DoubleYear0
460
+ def year_number
461
+ elements[0]
462
+ end
463
+
345
464
  end
346
465
 
347
466
  module DoubleYear1
348
-
349
- def value
350
- text_value
351
- end
352
-
353
- def pos
354
- {interval.begin => ['year', interval.end]}
355
- end
356
-
357
- def details
358
- {:year => value}
467
+ def value
468
+ text_value
469
+ end
470
+
471
+ def pos
472
+ {interval.begin => ['year', interval.end]}
473
+ end
474
+
475
+ def details
476
+ {:year => value}
359
477
  end
360
478
  end
361
479
 
@@ -368,35 +486,68 @@ module ScientificNameDirty
368
486
  end
369
487
 
370
488
  i0, s0 = index, []
371
- if input.index(Regexp.new('[0-9]'), index) == index
372
- r1 = instantiate_node(SyntaxNode,input, index...(index + 1))
373
- @index += 1
374
- else
375
- r1 = nil
376
- end
489
+ r1 = _nt_year_number
377
490
  s0 << r1
378
491
  if r1
379
- s2, i2 = [], index
380
- loop do
381
- if input.index(Regexp.new('[0-9A-Za-z\\?\\-]'), index) == index
382
- r3 = instantiate_node(SyntaxNode,input, index...(index + 1))
383
- @index += 1
384
- else
492
+ if input.index("-", index) == index
493
+ r2 = instantiate_node(SyntaxNode,input, index...(index + 1))
494
+ @index += 1
495
+ else
496
+ terminal_parse_failure("-")
497
+ r2 = nil
498
+ end
499
+ s0 << r2
500
+ if r2
501
+ s3, i3 = [], index
502
+ loop do
503
+ if input.index(Regexp.new('[0-9]'), index) == index
504
+ r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
505
+ @index += 1
506
+ else
507
+ r4 = nil
508
+ end
509
+ if r4
510
+ s3 << r4
511
+ else
512
+ break
513
+ end
514
+ end
515
+ if s3.empty?
516
+ self.index = i3
385
517
  r3 = nil
518
+ else
519
+ r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
386
520
  end
521
+ s0 << r3
387
522
  if r3
388
- s2 << r3
389
- else
390
- break
523
+ if input.index(Regexp.new('[A-Za-z]'), index) == index
524
+ r6 = instantiate_node(SyntaxNode,input, index...(index + 1))
525
+ @index += 1
526
+ else
527
+ r6 = nil
528
+ end
529
+ if r6
530
+ r5 = r6
531
+ else
532
+ r5 = instantiate_node(SyntaxNode,input, index...index)
533
+ end
534
+ s0 << r5
535
+ if r5
536
+ if input.index(Regexp.new('[\\?]'), index) == index
537
+ r8 = instantiate_node(SyntaxNode,input, index...(index + 1))
538
+ @index += 1
539
+ else
540
+ r8 = nil
541
+ end
542
+ if r8
543
+ r7 = r8
544
+ else
545
+ r7 = instantiate_node(SyntaxNode,input, index...index)
546
+ end
547
+ s0 << r7
548
+ end
391
549
  end
392
550
  end
393
- if s2.empty?
394
- self.index = i2
395
- r2 = nil
396
- else
397
- r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
398
- end
399
- s0 << r2
400
551
  end
401
552
  if s0.last
402
553
  r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
@@ -420,8 +571,7 @@ module ScientificNameDirty
420
571
  end
421
572
 
422
573
  module PageNumber1
423
-
424
- def value
574
+ def value
425
575
  end
426
576
  end
427
577
 
@@ -488,4 +638,3 @@ end
488
638
  class ScientificNameDirtyParser < Treetop::Runtime::CompiledParser
489
639
  include ScientificNameDirty
490
640
  end
491
-