biodiversity 3.5.1 → 4.0.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.
Files changed (40) hide show
  1. checksums.yaml +5 -5
  2. data/.gitignore +1 -0
  3. data/.rubocop.yml +9 -6
  4. data/.ruby-version +1 -1
  5. data/.travis.yml +1 -6
  6. data/CHANGELOG +3 -0
  7. data/Gemfile +2 -0
  8. data/README.md +37 -178
  9. data/Rakefile +15 -48
  10. data/biodiversity.gemspec +18 -21
  11. data/clib/linux/libgnparser.h +93 -0
  12. data/clib/linux/libgnparser.so +0 -0
  13. data/clib/mac/libgnparser.h +93 -0
  14. data/clib/mac/libgnparser.so +0 -0
  15. data/lib/biodiversity.rb +4 -9
  16. data/lib/biodiversity/parser.rb +65 -281
  17. data/lib/biodiversity/version.rb +8 -1
  18. data/spec/lib/biodiversity_spec.rb +9 -0
  19. data/spec/lib/parser_spec.rb +38 -0
  20. data/spec/spec_helper.rb +4 -81
  21. metadata +27 -102
  22. data/.byebug_history +0 -18
  23. data/.document +0 -5
  24. data/examples/socket_client.rb +0 -25
  25. data/lib/biodiversity/guid.rb +0 -1
  26. data/lib/biodiversity/guid/lsid.rb +0 -16
  27. data/lib/biodiversity/parser/scientific_name_canonical.rb +0 -528
  28. data/lib/biodiversity/parser/scientific_name_canonical.treetop +0 -120
  29. data/lib/biodiversity/parser/scientific_name_clean.rb +0 -8991
  30. data/lib/biodiversity/parser/scientific_name_clean.treetop +0 -1632
  31. data/lib/biodiversity/parser/scientific_name_dirty.rb +0 -1298
  32. data/lib/biodiversity/parser/scientific_name_dirty.treetop +0 -264
  33. data/spec/biodiversity_spec.rb +0 -11
  34. data/spec/files/test_data.txt +0 -490
  35. data/spec/files/todo.txt +0 -55
  36. data/spec/guid/lsid.spec.rb +0 -15
  37. data/spec/parser/scientific_name_canonical_spec.rb +0 -36
  38. data/spec/parser/scientific_name_clean_spec.rb +0 -1137
  39. data/spec/parser/scientific_name_dirty_spec.rb +0 -165
  40. data/spec/parser/scientific_name_spec.rb +0 -193
@@ -1,528 +0,0 @@
1
- # encoding: UTF-8
2
- # Autogenerated from a Treetop grammar. Edits may be lost.
3
-
4
-
5
- module ScientificNameCanonical
6
- include Treetop::Runtime
7
-
8
- def root
9
- @root ||= :root
10
- end
11
-
12
- include ScientificNameDirty
13
-
14
- module Root0
15
- def hybrid
16
- false
17
- end
18
-
19
- def details
20
- [super]
21
- end
22
-
23
- def parser_run
24
- 3
25
- end
26
- end
27
-
28
- module Root1
29
- def hybrid
30
- false
31
- end
32
-
33
- def details
34
- [super]
35
- end
36
-
37
- def parser_run
38
- 3
39
- end
40
- end
41
-
42
- def _nt_root
43
- start_index = index
44
- if node_cache[:root].has_key?(index)
45
- cached = node_cache[:root][index]
46
- if cached
47
- node_cache[:root][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
48
- @index = cached.interval.end
49
- end
50
- return cached
51
- end
52
-
53
- i0 = index
54
- r1 = _nt_multinomial_with_garbage
55
- r1.extend(Root0)
56
- r1.extend(Root0)
57
- if r1
58
- r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true
59
- r0 = r1
60
- else
61
- r2 = _nt_uninomial_with_garbage
62
- r2.extend(Root1)
63
- r2.extend(Root1)
64
- if r2
65
- r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true
66
- r0 = r2
67
- else
68
- @index = i0
69
- r0 = nil
70
- end
71
- end
72
-
73
- node_cache[:root][start_index] = r0
74
-
75
- r0
76
- end
77
-
78
- module MultinomialWithGarbage0
79
- def a
80
- elements[0]
81
- end
82
-
83
- def space1
84
- elements[1]
85
- end
86
-
87
- def b
88
- elements[2]
89
- end
90
-
91
- def space2
92
- elements[3]
93
- end
94
-
95
- def c
96
- elements[4]
97
- end
98
-
99
- def garbage
100
- elements[5]
101
- end
102
- end
103
-
104
- module MultinomialWithGarbage1
105
- def value
106
- a.value + " " + b.value + " " + c.value
107
- end
108
-
109
- def canonical
110
- a.canonical + " " + c.canonical
111
- end
112
-
113
- def pos
114
- a.pos.merge(b.pos).merge(c.pos)
115
- end
116
-
117
- def details
118
- a.details.merge(b.details).merge(c.details)
119
- end
120
- end
121
-
122
- module MultinomialWithGarbage2
123
- def a
124
- elements[0]
125
- end
126
-
127
- def space
128
- elements[1]
129
- end
130
-
131
- def b
132
- elements[2]
133
- end
134
-
135
- def garbage
136
- elements[3]
137
- end
138
- end
139
-
140
- module MultinomialWithGarbage3
141
- def value
142
- a.value + " " + b.value
143
- end
144
-
145
- def canonical
146
- a.canonical
147
- end
148
-
149
- def pos
150
- a.pos.merge(b.pos)
151
- end
152
-
153
- def details
154
- a.details.merge(b.details)
155
- end
156
- end
157
-
158
- module MultinomialWithGarbage4
159
- def a
160
- elements[0]
161
- end
162
-
163
- def space
164
- elements[1]
165
- end
166
-
167
- def b
168
- elements[2]
169
- end
170
-
171
- def garbage
172
- elements[3]
173
- end
174
- end
175
-
176
- module MultinomialWithGarbage5
177
- def value
178
- a.value + " " + b.value
179
- end
180
-
181
- def canonical
182
- a.canonical + " " + b.canonical
183
- end
184
-
185
- def pos
186
- a.pos.merge(b.pos)
187
- end
188
-
189
- def details
190
- a.details.merge(b.details)
191
- end
192
- end
193
-
194
- def _nt_multinomial_with_garbage
195
- start_index = index
196
- if node_cache[:multinomial_with_garbage].has_key?(index)
197
- cached = node_cache[:multinomial_with_garbage][index]
198
- if cached
199
- node_cache[:multinomial_with_garbage][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
200
- @index = cached.interval.end
201
- end
202
- return cached
203
- end
204
-
205
- i0 = index
206
- i1, s1 = index, []
207
- r2 = _nt_genus
208
- s1 << r2
209
- if r2
210
- r3 = _nt_space
211
- s1 << r3
212
- if r3
213
- r4 = _nt_infragenus
214
- s1 << r4
215
- if r4
216
- r5 = _nt_space
217
- s1 << r5
218
- if r5
219
- r6 = _nt_species
220
- s1 << r6
221
- if r6
222
- r7 = _nt_garbage
223
- s1 << r7
224
- end
225
- end
226
- end
227
- end
228
- end
229
- if s1.last
230
- r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
231
- r1.extend(MultinomialWithGarbage0)
232
- r1.extend(MultinomialWithGarbage1)
233
- else
234
- @index = i1
235
- r1 = nil
236
- end
237
- if r1
238
- r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true
239
- r0 = r1
240
- else
241
- i8, s8 = index, []
242
- r9 = _nt_genus
243
- s8 << r9
244
- if r9
245
- r10 = _nt_space
246
- s8 << r10
247
- if r10
248
- r11 = _nt_infragenus
249
- s8 << r11
250
- if r11
251
- r12 = _nt_garbage
252
- s8 << r12
253
- end
254
- end
255
- end
256
- if s8.last
257
- r8 = instantiate_node(SyntaxNode,input, i8...index, s8)
258
- r8.extend(MultinomialWithGarbage2)
259
- r8.extend(MultinomialWithGarbage3)
260
- else
261
- @index = i8
262
- r8 = nil
263
- end
264
- if r8
265
- r8 = SyntaxNode.new(input, (index-1)...index) if r8 == true
266
- r0 = r8
267
- else
268
- i13, s13 = index, []
269
- r14 = _nt_genus
270
- s13 << r14
271
- if r14
272
- r15 = _nt_space
273
- s13 << r15
274
- if r15
275
- r16 = _nt_species
276
- s13 << r16
277
- if r16
278
- r17 = _nt_garbage
279
- s13 << r17
280
- end
281
- end
282
- end
283
- if s13.last
284
- r13 = instantiate_node(SyntaxNode,input, i13...index, s13)
285
- r13.extend(MultinomialWithGarbage4)
286
- r13.extend(MultinomialWithGarbage5)
287
- else
288
- @index = i13
289
- r13 = nil
290
- end
291
- if r13
292
- r13 = SyntaxNode.new(input, (index-1)...index) if r13 == true
293
- r0 = r13
294
- else
295
- @index = i0
296
- r0 = nil
297
- end
298
- end
299
- end
300
-
301
- node_cache[:multinomial_with_garbage][start_index] = r0
302
-
303
- r0
304
- end
305
-
306
- module UninomialWithGarbage0
307
- def a
308
- elements[0]
309
- end
310
-
311
- def b
312
- elements[1]
313
- end
314
- end
315
-
316
- module UninomialWithGarbage1
317
- def value
318
- a.value
319
- end
320
-
321
- def canonical
322
- a.canonical
323
- end
324
-
325
- def pos
326
- a.pos
327
- end
328
-
329
- def details
330
- {:uninomial => a.details[:uninomial]}
331
- end
332
- end
333
-
334
- def _nt_uninomial_with_garbage
335
- start_index = index
336
- if node_cache[:uninomial_with_garbage].has_key?(index)
337
- cached = node_cache[:uninomial_with_garbage][index]
338
- if cached
339
- node_cache[:uninomial_with_garbage][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
340
- @index = cached.interval.end
341
- end
342
- return cached
343
- end
344
-
345
- i0, s0 = index, []
346
- r1 = _nt_uninomial_string
347
- s0 << r1
348
- if r1
349
- r2 = _nt_garbage
350
- s0 << r2
351
- end
352
- if s0.last
353
- r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
354
- r0.extend(UninomialWithGarbage0)
355
- r0.extend(UninomialWithGarbage1)
356
- else
357
- @index = i0
358
- r0 = nil
359
- end
360
-
361
- node_cache[:uninomial_with_garbage][start_index] = r0
362
-
363
- r0
364
- end
365
-
366
- module Garbage0
367
- def space
368
- elements[0]
369
- end
370
-
371
- end
372
-
373
- module Garbage1
374
- def space1
375
- elements[0]
376
- end
377
-
378
- def space2
379
- elements[2]
380
- end
381
-
382
- end
383
-
384
- module Garbage2
385
- def space_hard
386
- elements[0]
387
- end
388
-
389
- end
390
-
391
- def _nt_garbage
392
- start_index = index
393
- if node_cache[:garbage].has_key?(index)
394
- cached = node_cache[:garbage][index]
395
- if cached
396
- node_cache[:garbage][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
397
- @index = cached.interval.end
398
- end
399
- return cached
400
- end
401
-
402
- i0 = index
403
- i1, s1 = index, []
404
- r2 = _nt_space
405
- s1 << r2
406
- if r2
407
- if (match_len = has_terminal?("$$g@rbg3$$", false, index))
408
- r3 = instantiate_node(SyntaxNode,input, index...(index + match_len))
409
- @index += match_len
410
- else
411
- terminal_parse_failure('"$$g@rbg3$$"')
412
- r3 = nil
413
- end
414
- s1 << r3
415
- end
416
- if s1.last
417
- r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
418
- r1.extend(Garbage0)
419
- else
420
- @index = i1
421
- r1 = nil
422
- end
423
- if r1
424
- r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true
425
- r0 = r1
426
- else
427
- i4, s4 = index, []
428
- r5 = _nt_space
429
- s4 << r5
430
- if r5
431
- if has_terminal?(@regexps[gr = '\A["\',.]'] ||= Regexp.new(gr), :regexp, index)
432
- r6 = true
433
- @index += 1
434
- else
435
- terminal_parse_failure('["\',.]')
436
- r6 = nil
437
- end
438
- s4 << r6
439
- if r6
440
- r7 = _nt_space
441
- s4 << r7
442
- if r7
443
- s8, i8 = [], index
444
- loop do
445
- if has_terminal?(@regexps[gr = '\A[^щ]'] ||= Regexp.new(gr), :regexp, index)
446
- r9 = true
447
- @index += 1
448
- else
449
- terminal_parse_failure('[^щ]')
450
- r9 = nil
451
- end
452
- if r9
453
- s8 << r9
454
- else
455
- break
456
- end
457
- end
458
- r8 = instantiate_node(SyntaxNode,input, i8...index, s8)
459
- s4 << r8
460
- end
461
- end
462
- end
463
- if s4.last
464
- r4 = instantiate_node(SyntaxNode,input, i4...index, s4)
465
- r4.extend(Garbage1)
466
- else
467
- @index = i4
468
- r4 = nil
469
- end
470
- if r4
471
- r4 = SyntaxNode.new(input, (index-1)...index) if r4 == true
472
- r0 = r4
473
- else
474
- i10, s10 = index, []
475
- r11 = _nt_space_hard
476
- s10 << r11
477
- if r11
478
- s12, i12 = [], index
479
- loop do
480
- if has_terminal?(@regexps[gr = '\A[^ш]'] ||= Regexp.new(gr), :regexp, index)
481
- r13 = true
482
- @index += 1
483
- else
484
- terminal_parse_failure('[^ш]')
485
- r13 = nil
486
- end
487
- if r13
488
- s12 << r13
489
- else
490
- break
491
- end
492
- end
493
- if s12.empty?
494
- @index = i12
495
- r12 = nil
496
- else
497
- r12 = instantiate_node(SyntaxNode,input, i12...index, s12)
498
- end
499
- s10 << r12
500
- end
501
- if s10.last
502
- r10 = instantiate_node(SyntaxNode,input, i10...index, s10)
503
- r10.extend(Garbage2)
504
- else
505
- @index = i10
506
- r10 = nil
507
- end
508
- if r10
509
- r10 = SyntaxNode.new(input, (index-1)...index) if r10 == true
510
- r0 = r10
511
- else
512
- @index = i0
513
- r0 = nil
514
- end
515
- end
516
- end
517
-
518
- node_cache[:garbage][start_index] = r0
519
-
520
- r0
521
- end
522
-
523
- end
524
-
525
- class ScientificNameCanonicalParser < Treetop::Runtime::CompiledParser
526
- include ScientificNameCanonical
527
- end
528
-