biodiversity 3.4.0 → 3.4.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG +2 -0
- data/lib/biodiversity/parser/scientific_name_clean.rb +164 -128
- data/lib/biodiversity/parser/scientific_name_clean.treetop +1 -1
- data/lib/biodiversity/version.rb +1 -1
- data/spec/files/test_data.txt +3 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e93f20afe7648a25abd17776d1393c4c26fe766a
|
4
|
+
data.tar.gz: db6597066a86813547957855fbbaa40f6531f459
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 31147b2fea27eb3de0291631ec268f1ec272222208b0e0b899ba10084f40c37ba8b26ce25297bcc8d38267f383cc941432ce8d92653a32a78d17753e51b31454
|
7
|
+
data.tar.gz: 19effcb528d52cba1652bcaf0578df91c72679bed1097bcd4477c0413b2db64116107d7d46128fcbacad7991d8fbbf1bf282df866f952642c766d1a1aa8e5fa6
|
data/CHANGELOG
CHANGED
@@ -5241,6 +5241,9 @@ module ScientificNameClean
|
|
5241
5241
|
end
|
5242
5242
|
|
5243
5243
|
module AuthorWord3
|
5244
|
+
end
|
5245
|
+
|
5246
|
+
module AuthorWord4
|
5244
5247
|
def value
|
5245
5248
|
text_value.gsub(/([\p{Lu}]{3,})/) do |match|
|
5246
5249
|
UnicodeUtils.titlecase(match)
|
@@ -5256,10 +5259,10 @@ module ScientificNameClean
|
|
5256
5259
|
end
|
5257
5260
|
end
|
5258
5261
|
|
5259
|
-
module
|
5262
|
+
module AuthorWord5
|
5260
5263
|
end
|
5261
5264
|
|
5262
|
-
module
|
5265
|
+
module AuthorWord6
|
5263
5266
|
def value
|
5264
5267
|
text_value
|
5265
5268
|
end
|
@@ -5351,147 +5354,180 @@ module ScientificNameClean
|
|
5351
5354
|
r0 = r2
|
5352
5355
|
else
|
5353
5356
|
i7, s7 = index, []
|
5354
|
-
|
5355
|
-
if has_terminal?("
|
5356
|
-
|
5357
|
+
i9, s9 = index, []
|
5358
|
+
if has_terminal?("d", false, index)
|
5359
|
+
r10 = instantiate_node(SyntaxNode,input, index...(index + 1))
|
5357
5360
|
@index += 1
|
5358
5361
|
else
|
5359
|
-
terminal_parse_failure("
|
5362
|
+
terminal_parse_failure("d")
|
5363
|
+
r10 = nil
|
5364
|
+
end
|
5365
|
+
s9 << r10
|
5366
|
+
if r10
|
5367
|
+
if has_terminal?('\G[\'’]', true, index)
|
5368
|
+
r11 = true
|
5369
|
+
@index += 1
|
5370
|
+
else
|
5371
|
+
r11 = nil
|
5372
|
+
end
|
5373
|
+
s9 << r11
|
5374
|
+
end
|
5375
|
+
if s9.last
|
5376
|
+
r9 = instantiate_node(SyntaxNode,input, i9...index, s9)
|
5377
|
+
r9.extend(AuthorWord2)
|
5378
|
+
else
|
5379
|
+
@index = i9
|
5360
5380
|
r9 = nil
|
5361
5381
|
end
|
5362
5382
|
if r9
|
5363
5383
|
r8 = r9
|
5364
5384
|
else
|
5365
|
-
|
5366
|
-
|
5385
|
+
r8 = instantiate_node(SyntaxNode,input, index...index)
|
5386
|
+
end
|
5387
|
+
s7 << r8
|
5388
|
+
if r8
|
5389
|
+
i12 = index
|
5390
|
+
if has_terminal?("Å", false, index)
|
5391
|
+
r13 = instantiate_node(SyntaxNode,input, index...(index + 1))
|
5367
5392
|
@index += 1
|
5368
5393
|
else
|
5369
|
-
terminal_parse_failure("
|
5370
|
-
|
5394
|
+
terminal_parse_failure("Å")
|
5395
|
+
r13 = nil
|
5371
5396
|
end
|
5372
|
-
if
|
5373
|
-
|
5397
|
+
if r13
|
5398
|
+
r12 = r13
|
5374
5399
|
else
|
5375
|
-
if has_terminal?("
|
5376
|
-
|
5400
|
+
if has_terminal?("Ö", false, index)
|
5401
|
+
r14 = instantiate_node(SyntaxNode,input, index...(index + 1))
|
5377
5402
|
@index += 1
|
5378
5403
|
else
|
5379
|
-
terminal_parse_failure("
|
5380
|
-
|
5404
|
+
terminal_parse_failure("Ö")
|
5405
|
+
r14 = nil
|
5381
5406
|
end
|
5382
|
-
if
|
5383
|
-
|
5407
|
+
if r14
|
5408
|
+
r12 = r14
|
5384
5409
|
else
|
5385
|
-
if has_terminal?("
|
5386
|
-
|
5410
|
+
if has_terminal?("Á", false, index)
|
5411
|
+
r15 = instantiate_node(SyntaxNode,input, index...(index + 1))
|
5387
5412
|
@index += 1
|
5388
5413
|
else
|
5389
|
-
terminal_parse_failure("
|
5390
|
-
|
5414
|
+
terminal_parse_failure("Á")
|
5415
|
+
r15 = nil
|
5391
5416
|
end
|
5392
|
-
if
|
5393
|
-
|
5417
|
+
if r15
|
5418
|
+
r12 = r15
|
5394
5419
|
else
|
5395
|
-
if has_terminal?("
|
5396
|
-
|
5420
|
+
if has_terminal?("Ø", false, index)
|
5421
|
+
r16 = instantiate_node(SyntaxNode,input, index...(index + 1))
|
5397
5422
|
@index += 1
|
5398
5423
|
else
|
5399
|
-
terminal_parse_failure("
|
5400
|
-
|
5424
|
+
terminal_parse_failure("Ø")
|
5425
|
+
r16 = nil
|
5401
5426
|
end
|
5402
|
-
if
|
5403
|
-
|
5427
|
+
if r16
|
5428
|
+
r12 = r16
|
5404
5429
|
else
|
5405
|
-
if has_terminal?("
|
5406
|
-
|
5430
|
+
if has_terminal?("Ô", false, index)
|
5431
|
+
r17 = instantiate_node(SyntaxNode,input, index...(index + 1))
|
5407
5432
|
@index += 1
|
5408
5433
|
else
|
5409
|
-
terminal_parse_failure("
|
5410
|
-
|
5434
|
+
terminal_parse_failure("Ô")
|
5435
|
+
r17 = nil
|
5411
5436
|
end
|
5412
|
-
if
|
5413
|
-
|
5437
|
+
if r17
|
5438
|
+
r12 = r17
|
5414
5439
|
else
|
5415
|
-
if has_terminal?("
|
5416
|
-
|
5440
|
+
if has_terminal?("Š", false, index)
|
5441
|
+
r18 = instantiate_node(SyntaxNode,input, index...(index + 1))
|
5417
5442
|
@index += 1
|
5418
5443
|
else
|
5419
|
-
terminal_parse_failure("
|
5420
|
-
|
5444
|
+
terminal_parse_failure("Š")
|
5445
|
+
r18 = nil
|
5421
5446
|
end
|
5422
|
-
if
|
5423
|
-
|
5447
|
+
if r18
|
5448
|
+
r12 = r18
|
5424
5449
|
else
|
5425
|
-
if has_terminal?("
|
5426
|
-
|
5450
|
+
if has_terminal?("Ś", false, index)
|
5451
|
+
r19 = instantiate_node(SyntaxNode,input, index...(index + 1))
|
5427
5452
|
@index += 1
|
5428
5453
|
else
|
5429
|
-
terminal_parse_failure("
|
5430
|
-
|
5454
|
+
terminal_parse_failure("Ś")
|
5455
|
+
r19 = nil
|
5431
5456
|
end
|
5432
|
-
if
|
5433
|
-
|
5457
|
+
if r19
|
5458
|
+
r12 = r19
|
5434
5459
|
else
|
5435
|
-
if has_terminal?("
|
5436
|
-
|
5460
|
+
if has_terminal?("Č", false, index)
|
5461
|
+
r20 = instantiate_node(SyntaxNode,input, index...(index + 1))
|
5437
5462
|
@index += 1
|
5438
5463
|
else
|
5439
|
-
terminal_parse_failure("
|
5440
|
-
|
5464
|
+
terminal_parse_failure("Č")
|
5465
|
+
r20 = nil
|
5441
5466
|
end
|
5442
|
-
if
|
5443
|
-
|
5467
|
+
if r20
|
5468
|
+
r12 = r20
|
5444
5469
|
else
|
5445
|
-
if has_terminal?("
|
5446
|
-
|
5470
|
+
if has_terminal?("Ķ", false, index)
|
5471
|
+
r21 = instantiate_node(SyntaxNode,input, index...(index + 1))
|
5447
5472
|
@index += 1
|
5448
5473
|
else
|
5449
|
-
terminal_parse_failure("
|
5450
|
-
|
5474
|
+
terminal_parse_failure("Ķ")
|
5475
|
+
r21 = nil
|
5451
5476
|
end
|
5452
|
-
if
|
5453
|
-
|
5477
|
+
if r21
|
5478
|
+
r12 = r21
|
5454
5479
|
else
|
5455
|
-
if has_terminal?("
|
5456
|
-
|
5480
|
+
if has_terminal?("Ł", false, index)
|
5481
|
+
r22 = instantiate_node(SyntaxNode,input, index...(index + 1))
|
5457
5482
|
@index += 1
|
5458
5483
|
else
|
5459
|
-
terminal_parse_failure("
|
5460
|
-
|
5484
|
+
terminal_parse_failure("Ł")
|
5485
|
+
r22 = nil
|
5461
5486
|
end
|
5462
|
-
if
|
5463
|
-
|
5487
|
+
if r22
|
5488
|
+
r12 = r22
|
5464
5489
|
else
|
5465
|
-
if has_terminal?("
|
5466
|
-
|
5490
|
+
if has_terminal?("É", false, index)
|
5491
|
+
r23 = instantiate_node(SyntaxNode,input, index...(index + 1))
|
5467
5492
|
@index += 1
|
5468
5493
|
else
|
5469
|
-
terminal_parse_failure("
|
5470
|
-
|
5494
|
+
terminal_parse_failure("É")
|
5495
|
+
r23 = nil
|
5471
5496
|
end
|
5472
|
-
if
|
5473
|
-
|
5497
|
+
if r23
|
5498
|
+
r12 = r23
|
5474
5499
|
else
|
5475
|
-
if has_terminal?(
|
5476
|
-
|
5500
|
+
if has_terminal?("Ž", false, index)
|
5501
|
+
r24 = instantiate_node(SyntaxNode,input, index...(index + 1))
|
5477
5502
|
@index += 1
|
5478
5503
|
else
|
5479
|
-
|
5504
|
+
terminal_parse_failure("Ž")
|
5505
|
+
r24 = nil
|
5480
5506
|
end
|
5481
|
-
if
|
5482
|
-
|
5507
|
+
if r24
|
5508
|
+
r12 = r24
|
5483
5509
|
else
|
5484
|
-
if has_terminal?('\G[
|
5485
|
-
|
5510
|
+
if has_terminal?('\G[A-W]', true, index)
|
5511
|
+
r25 = true
|
5486
5512
|
@index += 1
|
5487
5513
|
else
|
5488
|
-
|
5514
|
+
r25 = nil
|
5489
5515
|
end
|
5490
|
-
if
|
5491
|
-
|
5516
|
+
if r25
|
5517
|
+
r12 = r25
|
5492
5518
|
else
|
5493
|
-
|
5494
|
-
|
5519
|
+
if has_terminal?('\G[Y-Z]', true, index)
|
5520
|
+
r26 = true
|
5521
|
+
@index += 1
|
5522
|
+
else
|
5523
|
+
r26 = nil
|
5524
|
+
end
|
5525
|
+
if r26
|
5526
|
+
r12 = r26
|
5527
|
+
else
|
5528
|
+
@index = i12
|
5529
|
+
r12 = nil
|
5530
|
+
end
|
5495
5531
|
end
|
5496
5532
|
end
|
5497
5533
|
end
|
@@ -5505,30 +5541,30 @@ module ScientificNameClean
|
|
5505
5541
|
end
|
5506
5542
|
end
|
5507
5543
|
end
|
5508
|
-
|
5509
|
-
|
5510
|
-
|
5511
|
-
|
5512
|
-
|
5513
|
-
|
5514
|
-
|
5515
|
-
|
5516
|
-
|
5517
|
-
|
5518
|
-
|
5519
|
-
|
5520
|
-
|
5521
|
-
|
5522
|
-
|
5544
|
+
s7 << r12
|
5545
|
+
if r12
|
5546
|
+
s27, i27 = [], index
|
5547
|
+
loop do
|
5548
|
+
if has_terminal?('\G[^0-9\\[\\]\\(\\)\\s&,]', true, index)
|
5549
|
+
r28 = true
|
5550
|
+
@index += 1
|
5551
|
+
else
|
5552
|
+
r28 = nil
|
5553
|
+
end
|
5554
|
+
if r28
|
5555
|
+
s27 << r28
|
5556
|
+
else
|
5557
|
+
break
|
5558
|
+
end
|
5523
5559
|
end
|
5560
|
+
r27 = instantiate_node(SyntaxNode,input, i27...index, s27)
|
5561
|
+
s7 << r27
|
5524
5562
|
end
|
5525
|
-
r23 = instantiate_node(SyntaxNode,input, i23...index, s23)
|
5526
|
-
s7 << r23
|
5527
5563
|
end
|
5528
5564
|
if s7.last
|
5529
5565
|
r7 = instantiate_node(SyntaxNode,input, i7...index, s7)
|
5530
|
-
r7.extend(AuthorWord2)
|
5531
5566
|
r7.extend(AuthorWord3)
|
5567
|
+
r7.extend(AuthorWord4)
|
5532
5568
|
else
|
5533
5569
|
@index = i7
|
5534
5570
|
r7 = nil
|
@@ -5536,52 +5572,52 @@ module ScientificNameClean
|
|
5536
5572
|
if r7
|
5537
5573
|
r0 = r7
|
5538
5574
|
else
|
5539
|
-
|
5575
|
+
i29, s29 = index, []
|
5540
5576
|
if has_terminal?("X", false, index)
|
5541
|
-
|
5577
|
+
r30 = instantiate_node(SyntaxNode,input, index...(index + 1))
|
5542
5578
|
@index += 1
|
5543
5579
|
else
|
5544
5580
|
terminal_parse_failure("X")
|
5545
|
-
|
5581
|
+
r30 = nil
|
5546
5582
|
end
|
5547
|
-
|
5548
|
-
if
|
5549
|
-
|
5583
|
+
s29 << r30
|
5584
|
+
if r30
|
5585
|
+
s31, i31 = [], index
|
5550
5586
|
loop do
|
5551
5587
|
if has_terminal?('\G[^0-9\\[\\]\\(\\)\\s&,]', true, index)
|
5552
|
-
|
5588
|
+
r32 = true
|
5553
5589
|
@index += 1
|
5554
5590
|
else
|
5555
|
-
|
5591
|
+
r32 = nil
|
5556
5592
|
end
|
5557
|
-
if
|
5558
|
-
|
5593
|
+
if r32
|
5594
|
+
s31 << r32
|
5559
5595
|
else
|
5560
5596
|
break
|
5561
5597
|
end
|
5562
5598
|
end
|
5563
|
-
if
|
5564
|
-
@index =
|
5565
|
-
|
5599
|
+
if s31.empty?
|
5600
|
+
@index = i31
|
5601
|
+
r31 = nil
|
5566
5602
|
else
|
5567
|
-
|
5603
|
+
r31 = instantiate_node(SyntaxNode,input, i31...index, s31)
|
5568
5604
|
end
|
5569
|
-
|
5605
|
+
s29 << r31
|
5570
5606
|
end
|
5571
|
-
if
|
5572
|
-
|
5573
|
-
|
5574
|
-
|
5607
|
+
if s29.last
|
5608
|
+
r29 = instantiate_node(SyntaxNode,input, i29...index, s29)
|
5609
|
+
r29.extend(AuthorWord5)
|
5610
|
+
r29.extend(AuthorWord6)
|
5575
5611
|
else
|
5576
|
-
@index =
|
5577
|
-
|
5612
|
+
@index = i29
|
5613
|
+
r29 = nil
|
5578
5614
|
end
|
5579
|
-
if
|
5580
|
-
r0 =
|
5615
|
+
if r29
|
5616
|
+
r0 = r29
|
5581
5617
|
else
|
5582
|
-
|
5583
|
-
if
|
5584
|
-
r0 =
|
5618
|
+
r33 = _nt_author_prefix_word
|
5619
|
+
if r33
|
5620
|
+
r0 = r33
|
5585
5621
|
else
|
5586
5622
|
@index = i0
|
5587
5623
|
r0 = nil
|
@@ -1136,7 +1136,7 @@ grammar ScientificNameClean
|
|
1136
1136
|
end
|
1137
1137
|
}
|
1138
1138
|
/
|
1139
|
-
("Å"/"Ö"/"Á"/"Ø"/"Ô"/"Š"/"Ś"/"Č"/"Ķ"/"Ł"/"É"/"Ž"/[A-W]/[Y-Z]) [^0-9\[\]\(\)\s&,]* {
|
1139
|
+
("d" ['’])? ("Å"/"Ö"/"Á"/"Ø"/"Ô"/"Š"/"Ś"/"Č"/"Ķ"/"Ł"/"É"/"Ž"/[A-W]/[Y-Z]) [^0-9\[\]\(\)\s&,]* {
|
1140
1140
|
def value
|
1141
1141
|
text_value.gsub(/([\p{Lu}]{3,})/) do |match|
|
1142
1142
|
UnicodeUtils.titlecase(match)
|
data/lib/biodiversity/version.rb
CHANGED
data/spec/files/test_data.txt
CHANGED
@@ -221,6 +221,7 @@ Puya acris ht.|{"scientificName":{"id":"83c98b8e-f373-57df-92bf-5a39a56d9909", "
|
|
221
221
|
Puya acris anon.|{"scientificName":{"id":"2b5243d3-e8a7-5e6c-a2c1-beb2ee5c3020", "parsed":true, "parser_version":"test_version", "parser_run":1,"verbatim":"Puya acris anon.","normalized":"Puya acris anon.","canonical":"Puya acris","hybrid":false,"details":[{"genus":{"string":"Puya"},"species":{"string":"acris","authorship":"anon.","basionymAuthorTeam":{"authorTeam":"anon.","author":["unknown"]}}}],"positions":{"0":["genus",4],"5":["species",10],"11":["unknown_author",16]}}}
|
222
222
|
Puya acris hort.|{"scientificName":{"id":"78228a5e-dcd3-58f9-bf21-b452c378f6ee", "parsed":true, "verbatim":"Puya acris hort.", "normalized":"Puya acris", "canonical":"Puya acris", "hybrid":false, "details":[{"genus":{"string":"Puya"}, "species":{"string":"acris"}}], "parser_version":"test_version", "parser_run":1, "positions":{"0":["genus", 4], "5":["species", 10]}}}
|
223
223
|
Prunus mexicana S. Watson var. reticulata (Sarg.) Sarg.|{"scientificName":{"id":"5ba1cc96-ab40-51b3-951d-f91b5bff1da8", "parsed":true, "parser_version":"test_version", "verbatim":"Prunus mexicana S. Watson var. reticulata (Sarg.) Sarg.", "normalized":"Prunus mexicana S. Watson var. reticulata (Sarg.) Sarg.", "canonical":"Prunus mexicana reticulata", "hybrid":false, "details":[{"genus":{"string":"Prunus"}, "species":{"string":"mexicana", "authorship":"S. Watson", "basionymAuthorTeam":{"authorTeam":"S. Watson", "author":["S. Watson"]}}, "infraspecies":[{"string":"reticulata", "rank":"var.", "authorship":"(Sarg.) Sarg.", "combinationAuthorTeam":{"authorTeam":"Sarg.", "author":["Sarg."]}, "basionymAuthorTeam":{"authorTeam":"Sarg.", "author":["Sarg."]}}]}], "parser_run":1, "positions":{"0":["genus", 6], "7":["species", 15], "16":["author_word", 18], "19":["author_word", 25], "26":["infraspecific_type", 30], "31":["infraspecies", 41], "43":["author_word", 48], "50":["author_word", 55]}}}
|
224
|
+
|
224
225
|
#miscellaneous names
|
225
226
|
Fagus sylvatica subsp. orientalis (Lipsky) Greuter & Burdet|{"scientificName":{"id":"f0bff1a3-0923-58d1-807f-c5da5b85531e", "parsed":true, "parser_version":"test_version", "verbatim":"Fagus sylvatica subsp. orientalis (Lipsky) Greuter & Burdet", "normalized":"Fagus sylvatica subsp. orientalis (Lipsky) Greuter & Burdet", "canonical":"Fagus sylvatica orientalis", "hybrid":false, "details":[{"genus":{"string":"Fagus"}, "species":{"string":"sylvatica"}, "infraspecies":[{"string":"orientalis", "rank":"subsp.", "authorship":"(Lipsky) Greuter & Burdet", "combinationAuthorTeam":{"authorTeam":"Greuter & Burdet", "author":["Greuter", "Burdet"]}, "basionymAuthorTeam":{"authorTeam":"Lipsky", "author":["Lipsky"]}}]}], "parser_run":1, "positions":{"0":["genus", 5], "6":["species", 15], "16":["infraspecific_type", 22], "23":["infraspecies", 33], "35":["author_word", 41], "43":["author_word", 50], "53":["author_word", 59]}}}
|
226
227
|
Stagonospora polyspora M.T. Lucas & Sousa da Câmara 1934|{"scientificName":{"id":"f03d53d7-2db1-591f-8727-6b77c0af2e0c", "parsed":true, "parser_version":"test_version", "parser_run":1,"verbatim":"Stagonospora polyspora M.T. Lucas & Sousa da C\u00e2mara 1934","normalized":"Stagonospora polyspora M.T. Lucas & Sousa da C\u00e2mara 1934","canonical":"Stagonospora polyspora","hybrid":false,"details":[{"genus":{"string":"Stagonospora"},"species":{"string":"polyspora","authorship":"M.T. Lucas & Sousa da C\u00e2mara 1934","basionymAuthorTeam":{"authorTeam":"M.T. Lucas & Sousa da C\u00e2mara","author":["M.T. Lucas","Sousa da C\u00e2mara"],"year":"1934"}}}],"positions":{"0":["genus",12],"13":["species",22],"23":["author_word",27],"28":["author_word",33],"36":["author_word",41],"42":["author_word",44],"45":["author_word",51],"52":["year",56]}}}
|
@@ -246,6 +247,8 @@ Cypraeovula (Luponia) amphithales perdentata|{"scientificName":{"id":"d05be4e3-a
|
|
246
247
|
Polyrhachis orsyllus nat musculus Forel 1901|{"scientificName":{"id":"3392132e-3dba-5b7e-a7c9-e4a68954c8b2", "parsed":true, "parser_version":"test_version", "verbatim":"Polyrhachis orsyllus nat musculus Forel 1901", "normalized":"Polyrhachis orsyllus nat musculus Forel 1901", "canonical":"Polyrhachis orsyllus musculus", "hybrid":false, "details":[{"genus":{"string":"Polyrhachis"}, "species":{"string":"orsyllus"}, "infraspecies":[{"string":"musculus", "rank":"nat", "authorship":"Forel 1901", "basionymAuthorTeam":{"authorTeam":"Forel", "author":["Forel"], "year":"1901"}}]}], "parser_run":1, "positions":{"0":["genus", 11], "12":["species", 20], "21":["infraspecific_type", 24], "25":["infraspecies", 33], "34":["author_word", 39], "40":["year", 44]}}}
|
247
248
|
Latrodectus 13-guttatus Thorell, 1875|{"scientificName":{"id":"0a2dd58d-0c7b-5aa3-99bf-2b4fbb5e9a52", "parsed":true, "verbatim":"Latrodectus 13-guttatus Thorell, 1875", "normalized":"Latrodectus tredecguttatus Thorell 1875", "canonical":"Latrodectus tredecguttatus", "hybrid":false, "details":[{"genus":{"string":"Latrodectus"}, "species":{"string":"tredecguttatus", "authorship":"Thorell, 1875", "basionymAuthorTeam":{"authorTeam":"Thorell", "author":["Thorell"], "year":"1875"}}}], "parser_version":"test_version", "parser_run":1, "positions":{"0":["genus", 11], "12":["species", 23], "24":["author_word", 31], "33":["year", 37]}}}
|
248
249
|
Latrodectus 3-guttatus Thorell 1875|{"scientificName":{"id":"27d61aec-f214-54c2-8c35-a7a80617e54d", "parsed":true, "verbatim":"Latrodectus 3-guttatus Thorell 1875", "normalized":"Latrodectus triguttatus Thorell 1875", "canonical":"Latrodectus triguttatus", "hybrid":false, "details":[{"genus":{"string":"Latrodectus"}, "species":{"string":"triguttatus", "authorship":"Thorell 1875", "basionymAuthorTeam":{"authorTeam":"Thorell", "author":["Thorell"], "year":"1875"}}}], "parser_version":"test_version", "parser_run":1, "positions":{"0":["genus", 11], "12":["species", 22], "23":["author_word", 30], "31":["year", 35]}}}
|
250
|
+
Cirsium creticum (Lam.) d'Urv. subsp. creticum|{"scientificName":{"id":"fb7cbaf0-d192-5302-b86f-612773b3abae", "parsed":true, "parser_version":"test_version", "verbatim":"Cirsium creticum (Lam.) d'Urv. subsp. creticum", "normalized":"Cirsium creticum (Lam.) d'Urv. subsp. creticum", "canonical":"Cirsium creticum creticum", "hybrid":false, "details":[{"genus":{"string":"Cirsium"}, "species":{"string":"creticum", "authorship":"(Lam.) d'Urv.", "combinationAuthorTeam":{"authorTeam":"d'Urv.", "author":["d'Urv."]}, "basionymAuthorTeam":{"authorTeam":"Lam.", "author":["Lam."]}}, "infraspecies":[{"string":"creticum", "rank":"subsp."}]}], "parser_run":1, "positions":{"0":["genus", 7], "8":["species", 16], "18":["author_word", 22], "24":["author_word", 30], "31":["infraspecific_type", 37], "38":["infraspecies", 46]}}}
|
251
|
+
Cirsium creticum (Lam.) d’Urv. subsp. creticum|{"scientificName":{"id":"2c2018ea-1185-5f97-8989-621a979c5349", "parsed":true, "parser_version":"test_version", "verbatim":"Cirsium creticum (Lam.) d’Urv. subsp. creticum", "normalized":"Cirsium creticum (Lam.) d’Urv. subsp. creticum", "canonical":"Cirsium creticum creticum", "hybrid":false, "details":[{"genus":{"string":"Cirsium"}, "species":{"string":"creticum", "authorship":"(Lam.) d’Urv.", "combinationAuthorTeam":{"authorTeam":"d’Urv.", "author":["d’Urv."]}, "basionymAuthorTeam":{"authorTeam":"Lam.", "author":["Lam."]}}, "infraspecies":[{"string":"creticum", "rank":"subsp."}]}], "parser_run":1, "positions":{"0":["genus", 7], "8":["species", 16], "18":["author_word", 22], "24":["author_word", 30], "31":["infraspecific_type", 37], "38":["infraspecies", 46]}}}
|
249
252
|
|
250
253
|
#names with ex authors
|
251
254
|
Arthopyrenia hyalospora (Nyl. ex Banker) R.C. Harris|{"scientificName":{"id":"ab3998af-53dc-53fd-af8b-fab94dacbcbc", "parsed":true, "verbatim":"Arthopyrenia hyalospora (Nyl. ex Banker) R.C. Harris", "normalized":"Arthopyrenia hyalospora (Nyl. ex Banker) R.C. Harris", "canonical":"Arthopyrenia hyalospora", "hybrid":false, "details":[{"genus":{"string":"Arthopyrenia"}, "species":{"string":"hyalospora", "authorship":"(Nyl. ex Banker) R.C. Harris", "combinationAuthorTeam":{"authorTeam":"R.C. Harris", "author":["R.C. Harris"]}, "basionymAuthorTeam":{"authorTeam":"Nyl.", "author":["Nyl."], "exAuthorTeam":{"authorTeam":"Banker", "author":["Banker"]}}}}], "parser_version":"test_version", "parser_run":1, "positions":{"0":["genus", 12], "13":["species", 23], "25":["author_word", 29], "33":["author_word", 39], "41":["author_word", 45], "46":["author_word", 52]}}}
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: biodiversity
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.4.
|
4
|
+
version: 3.4.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dmitry Mozzherin
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-08-
|
11
|
+
date: 2015-08-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: treetop
|