biodiversity 3.4.3 → 3.4.4
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.
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: d9db331e5d06e6b52792e8d4c70763429604ff2e
|
|
4
|
+
data.tar.gz: bc2c2626bf49768cb823974cfef891096b96b58c
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 7fa086b1a5c4b51b7ca9edc67052d83d9e4d1fecb9fee91015becb72fbe1a4eed5059495e429b9aeb2368fe4c47abf277ed9cfcf32d380675156fe773e56500e
|
|
7
|
+
data.tar.gz: d6bfcd66264d3105e04a1f87e0c67ab8315ea0ffb598965abf2e575f5d9e4770648417ce0294f011f159ee039c427cbd773cd9c42a008792fa6994fae4556c27
|
data/CHANGELOG
CHANGED
|
@@ -1,7 +1,12 @@
|
|
|
1
|
+
3.4.4 -- support "del" as part of authorship, do not truncate epithets that
|
|
2
|
+
start with "nomen", add "nvar." as a rank
|
|
3
|
+
|
|
1
4
|
3.4.3 -- add "fil." as a possible spelling of "filius", add "do" as an author
|
|
2
5
|
prefix, add "apud" as an author separator, add possible second "ex" or
|
|
3
6
|
"in"
|
|
7
|
+
|
|
4
8
|
3.4.2 -- update treetop to 1.6
|
|
9
|
+
|
|
5
10
|
3.4.1 -- support for authors starting with "d'"
|
|
6
11
|
|
|
7
12
|
3.4.0 -- added ScientificNameParser.add_rank_to_canonical(parsed) method.
|
data/lib/biodiversity/parser.rb
CHANGED
|
@@ -14,7 +14,7 @@ module PreProcessor
|
|
|
14
14
|
\(?s\.\s?lat\.|
|
|
15
15
|
sec\.|sec|near)\b.*$/x
|
|
16
16
|
TAXON_CONCEPTS3 = /(,\s*|\s+)(pro parte|p\.\s?p\.)\s*$/i
|
|
17
|
-
NOMEN_CONCEPTS = /(,\s*|\s+)(\(?nomen|\(?nom\.|\(?comb\.).*$/i
|
|
17
|
+
NOMEN_CONCEPTS = /(,\s*|\s+)(\(?nomen\b|\(?nom\.|\(?comb\.).*$/i
|
|
18
18
|
LAST_WORD_JUNK = /(,\s*|\s+)
|
|
19
19
|
(spp\.|spp|var\.|
|
|
20
20
|
var|von|van|ined\.|
|
|
@@ -2212,11 +2212,11 @@ module ScientificNameClean
|
|
|
2212
2212
|
r0.extend(Rank0)
|
|
2213
2213
|
r0.extend(Rank0)
|
|
2214
2214
|
else
|
|
2215
|
-
if (match_len = has_terminal?("
|
|
2215
|
+
if (match_len = has_terminal?("nvar.", false, index))
|
|
2216
2216
|
r10 = instantiate_node(SyntaxNode,input, index...(index + match_len))
|
|
2217
2217
|
@index += match_len
|
|
2218
2218
|
else
|
|
2219
|
-
terminal_parse_failure('"
|
|
2219
|
+
terminal_parse_failure('"nvar."')
|
|
2220
2220
|
r10 = nil
|
|
2221
2221
|
end
|
|
2222
2222
|
if r10
|
|
@@ -2225,11 +2225,11 @@ module ScientificNameClean
|
|
|
2225
2225
|
r0.extend(Rank0)
|
|
2226
2226
|
r0.extend(Rank0)
|
|
2227
2227
|
else
|
|
2228
|
-
if (match_len = has_terminal?("
|
|
2228
|
+
if (match_len = has_terminal?("pseudovar.", false, index))
|
|
2229
2229
|
r11 = instantiate_node(SyntaxNode,input, index...(index + match_len))
|
|
2230
2230
|
@index += match_len
|
|
2231
2231
|
else
|
|
2232
|
-
terminal_parse_failure('"
|
|
2232
|
+
terminal_parse_failure('"pseudovar."')
|
|
2233
2233
|
r11 = nil
|
|
2234
2234
|
end
|
|
2235
2235
|
if r11
|
|
@@ -2238,11 +2238,11 @@ module ScientificNameClean
|
|
|
2238
2238
|
r0.extend(Rank0)
|
|
2239
2239
|
r0.extend(Rank0)
|
|
2240
2240
|
else
|
|
2241
|
-
if (match_len = has_terminal?("
|
|
2241
|
+
if (match_len = has_terminal?("sect.", false, index))
|
|
2242
2242
|
r12 = instantiate_node(SyntaxNode,input, index...(index + match_len))
|
|
2243
2243
|
@index += match_len
|
|
2244
2244
|
else
|
|
2245
|
-
terminal_parse_failure('"
|
|
2245
|
+
terminal_parse_failure('"sect."')
|
|
2246
2246
|
r12 = nil
|
|
2247
2247
|
end
|
|
2248
2248
|
if r12
|
|
@@ -2251,11 +2251,11 @@ module ScientificNameClean
|
|
|
2251
2251
|
r0.extend(Rank0)
|
|
2252
2252
|
r0.extend(Rank0)
|
|
2253
2253
|
else
|
|
2254
|
-
if (match_len = has_terminal?("
|
|
2254
|
+
if (match_len = has_terminal?("ser.", false, index))
|
|
2255
2255
|
r13 = instantiate_node(SyntaxNode,input, index...(index + match_len))
|
|
2256
2256
|
@index += match_len
|
|
2257
2257
|
else
|
|
2258
|
-
terminal_parse_failure('"
|
|
2258
|
+
terminal_parse_failure('"ser."')
|
|
2259
2259
|
r13 = nil
|
|
2260
2260
|
end
|
|
2261
2261
|
if r13
|
|
@@ -2264,11 +2264,11 @@ module ScientificNameClean
|
|
|
2264
2264
|
r0.extend(Rank0)
|
|
2265
2265
|
r0.extend(Rank0)
|
|
2266
2266
|
else
|
|
2267
|
-
if (match_len = has_terminal?("
|
|
2267
|
+
if (match_len = has_terminal?("var.", false, index))
|
|
2268
2268
|
r14 = instantiate_node(SyntaxNode,input, index...(index + match_len))
|
|
2269
2269
|
@index += match_len
|
|
2270
2270
|
else
|
|
2271
|
-
terminal_parse_failure('"
|
|
2271
|
+
terminal_parse_failure('"var."')
|
|
2272
2272
|
r14 = nil
|
|
2273
2273
|
end
|
|
2274
2274
|
if r14
|
|
@@ -2277,11 +2277,11 @@ module ScientificNameClean
|
|
|
2277
2277
|
r0.extend(Rank0)
|
|
2278
2278
|
r0.extend(Rank0)
|
|
2279
2279
|
else
|
|
2280
|
-
if (match_len = has_terminal?("
|
|
2280
|
+
if (match_len = has_terminal?("subvar.", false, index))
|
|
2281
2281
|
r15 = instantiate_node(SyntaxNode,input, index...(index + match_len))
|
|
2282
2282
|
@index += match_len
|
|
2283
2283
|
else
|
|
2284
|
-
terminal_parse_failure('"
|
|
2284
|
+
terminal_parse_failure('"subvar."')
|
|
2285
2285
|
r15 = nil
|
|
2286
2286
|
end
|
|
2287
2287
|
if r15
|
|
@@ -2290,11 +2290,11 @@ module ScientificNameClean
|
|
|
2290
2290
|
r0.extend(Rank0)
|
|
2291
2291
|
r0.extend(Rank0)
|
|
2292
2292
|
else
|
|
2293
|
-
if (match_len = has_terminal?("var
|
|
2293
|
+
if (match_len = has_terminal?("[var.]", false, index))
|
|
2294
2294
|
r16 = instantiate_node(SyntaxNode,input, index...(index + match_len))
|
|
2295
2295
|
@index += match_len
|
|
2296
2296
|
else
|
|
2297
|
-
terminal_parse_failure('"var
|
|
2297
|
+
terminal_parse_failure('"[var.]"')
|
|
2298
2298
|
r16 = nil
|
|
2299
2299
|
end
|
|
2300
2300
|
if r16
|
|
@@ -2303,11 +2303,11 @@ module ScientificNameClean
|
|
|
2303
2303
|
r0.extend(Rank0)
|
|
2304
2304
|
r0.extend(Rank0)
|
|
2305
2305
|
else
|
|
2306
|
-
if (match_len = has_terminal?("
|
|
2306
|
+
if (match_len = has_terminal?("var ", false, index))
|
|
2307
2307
|
r17 = instantiate_node(SyntaxNode,input, index...(index + match_len))
|
|
2308
2308
|
@index += match_len
|
|
2309
2309
|
else
|
|
2310
|
-
terminal_parse_failure('"
|
|
2310
|
+
terminal_parse_failure('"var "')
|
|
2311
2311
|
r17 = nil
|
|
2312
2312
|
end
|
|
2313
2313
|
if r17
|
|
@@ -2316,11 +2316,11 @@ module ScientificNameClean
|
|
|
2316
2316
|
r0.extend(Rank0)
|
|
2317
2317
|
r0.extend(Rank0)
|
|
2318
2318
|
else
|
|
2319
|
-
if (match_len = has_terminal?("subsp
|
|
2319
|
+
if (match_len = has_terminal?("subsp.", false, index))
|
|
2320
2320
|
r18 = instantiate_node(SyntaxNode,input, index...(index + match_len))
|
|
2321
2321
|
@index += match_len
|
|
2322
2322
|
else
|
|
2323
|
-
terminal_parse_failure('"subsp
|
|
2323
|
+
terminal_parse_failure('"subsp."')
|
|
2324
2324
|
r18 = nil
|
|
2325
2325
|
end
|
|
2326
2326
|
if r18
|
|
@@ -2329,11 +2329,11 @@ module ScientificNameClean
|
|
|
2329
2329
|
r0.extend(Rank0)
|
|
2330
2330
|
r0.extend(Rank0)
|
|
2331
2331
|
else
|
|
2332
|
-
if (match_len = has_terminal?("
|
|
2332
|
+
if (match_len = has_terminal?("subsp ", false, index))
|
|
2333
2333
|
r19 = instantiate_node(SyntaxNode,input, index...(index + match_len))
|
|
2334
2334
|
@index += match_len
|
|
2335
2335
|
else
|
|
2336
|
-
terminal_parse_failure('"
|
|
2336
|
+
terminal_parse_failure('"subsp "')
|
|
2337
2337
|
r19 = nil
|
|
2338
2338
|
end
|
|
2339
2339
|
if r19
|
|
@@ -2342,11 +2342,11 @@ module ScientificNameClean
|
|
|
2342
2342
|
r0.extend(Rank0)
|
|
2343
2343
|
r0.extend(Rank0)
|
|
2344
2344
|
else
|
|
2345
|
-
if (match_len = has_terminal?("
|
|
2345
|
+
if (match_len = has_terminal?("subf.", false, index))
|
|
2346
2346
|
r20 = instantiate_node(SyntaxNode,input, index...(index + match_len))
|
|
2347
2347
|
@index += match_len
|
|
2348
2348
|
else
|
|
2349
|
-
terminal_parse_failure('"
|
|
2349
|
+
terminal_parse_failure('"subf."')
|
|
2350
2350
|
r20 = nil
|
|
2351
2351
|
end
|
|
2352
2352
|
if r20
|
|
@@ -2355,11 +2355,11 @@ module ScientificNameClean
|
|
|
2355
2355
|
r0.extend(Rank0)
|
|
2356
2356
|
r0.extend(Rank0)
|
|
2357
2357
|
else
|
|
2358
|
-
if (match_len = has_terminal?("
|
|
2358
|
+
if (match_len = has_terminal?("race ", false, index))
|
|
2359
2359
|
r21 = instantiate_node(SyntaxNode,input, index...(index + match_len))
|
|
2360
2360
|
@index += match_len
|
|
2361
2361
|
else
|
|
2362
|
-
terminal_parse_failure('"
|
|
2362
|
+
terminal_parse_failure('"race "')
|
|
2363
2363
|
r21 = nil
|
|
2364
2364
|
end
|
|
2365
2365
|
if r21
|
|
@@ -2368,11 +2368,11 @@ module ScientificNameClean
|
|
|
2368
2368
|
r0.extend(Rank0)
|
|
2369
2369
|
r0.extend(Rank0)
|
|
2370
2370
|
else
|
|
2371
|
-
if (match_len = has_terminal?("forma
|
|
2371
|
+
if (match_len = has_terminal?("forma.", false, index))
|
|
2372
2372
|
r22 = instantiate_node(SyntaxNode,input, index...(index + match_len))
|
|
2373
2373
|
@index += match_len
|
|
2374
2374
|
else
|
|
2375
|
-
terminal_parse_failure('"forma
|
|
2375
|
+
terminal_parse_failure('"forma."')
|
|
2376
2376
|
r22 = nil
|
|
2377
2377
|
end
|
|
2378
2378
|
if r22
|
|
@@ -2381,11 +2381,11 @@ module ScientificNameClean
|
|
|
2381
2381
|
r0.extend(Rank0)
|
|
2382
2382
|
r0.extend(Rank0)
|
|
2383
2383
|
else
|
|
2384
|
-
if (match_len = has_terminal?("
|
|
2384
|
+
if (match_len = has_terminal?("forma ", false, index))
|
|
2385
2385
|
r23 = instantiate_node(SyntaxNode,input, index...(index + match_len))
|
|
2386
2386
|
@index += match_len
|
|
2387
2387
|
else
|
|
2388
|
-
terminal_parse_failure('"
|
|
2388
|
+
terminal_parse_failure('"forma "')
|
|
2389
2389
|
r23 = nil
|
|
2390
2390
|
end
|
|
2391
2391
|
if r23
|
|
@@ -2394,11 +2394,11 @@ module ScientificNameClean
|
|
|
2394
2394
|
r0.extend(Rank0)
|
|
2395
2395
|
r0.extend(Rank0)
|
|
2396
2396
|
else
|
|
2397
|
-
if (match_len = has_terminal?("fma
|
|
2397
|
+
if (match_len = has_terminal?("fma.", false, index))
|
|
2398
2398
|
r24 = instantiate_node(SyntaxNode,input, index...(index + match_len))
|
|
2399
2399
|
@index += match_len
|
|
2400
2400
|
else
|
|
2401
|
-
terminal_parse_failure('"fma
|
|
2401
|
+
terminal_parse_failure('"fma."')
|
|
2402
2402
|
r24 = nil
|
|
2403
2403
|
end
|
|
2404
2404
|
if r24
|
|
@@ -2407,11 +2407,11 @@ module ScientificNameClean
|
|
|
2407
2407
|
r0.extend(Rank0)
|
|
2408
2408
|
r0.extend(Rank0)
|
|
2409
2409
|
else
|
|
2410
|
-
if (match_len = has_terminal?("
|
|
2410
|
+
if (match_len = has_terminal?("fma ", false, index))
|
|
2411
2411
|
r25 = instantiate_node(SyntaxNode,input, index...(index + match_len))
|
|
2412
2412
|
@index += match_len
|
|
2413
2413
|
else
|
|
2414
|
-
terminal_parse_failure('"
|
|
2414
|
+
terminal_parse_failure('"fma "')
|
|
2415
2415
|
r25 = nil
|
|
2416
2416
|
end
|
|
2417
2417
|
if r25
|
|
@@ -2420,11 +2420,11 @@ module ScientificNameClean
|
|
|
2420
2420
|
r0.extend(Rank0)
|
|
2421
2421
|
r0.extend(Rank0)
|
|
2422
2422
|
else
|
|
2423
|
-
if (match_len = has_terminal?("form
|
|
2423
|
+
if (match_len = has_terminal?("form.", false, index))
|
|
2424
2424
|
r26 = instantiate_node(SyntaxNode,input, index...(index + match_len))
|
|
2425
2425
|
@index += match_len
|
|
2426
2426
|
else
|
|
2427
|
-
terminal_parse_failure('"form
|
|
2427
|
+
terminal_parse_failure('"form."')
|
|
2428
2428
|
r26 = nil
|
|
2429
2429
|
end
|
|
2430
2430
|
if r26
|
|
@@ -2433,11 +2433,11 @@ module ScientificNameClean
|
|
|
2433
2433
|
r0.extend(Rank0)
|
|
2434
2434
|
r0.extend(Rank0)
|
|
2435
2435
|
else
|
|
2436
|
-
if (match_len = has_terminal?("
|
|
2436
|
+
if (match_len = has_terminal?("form ", false, index))
|
|
2437
2437
|
r27 = instantiate_node(SyntaxNode,input, index...(index + match_len))
|
|
2438
2438
|
@index += match_len
|
|
2439
2439
|
else
|
|
2440
|
-
terminal_parse_failure('"
|
|
2440
|
+
terminal_parse_failure('"form "')
|
|
2441
2441
|
r27 = nil
|
|
2442
2442
|
end
|
|
2443
2443
|
if r27
|
|
@@ -2446,11 +2446,11 @@ module ScientificNameClean
|
|
|
2446
2446
|
r0.extend(Rank0)
|
|
2447
2447
|
r0.extend(Rank0)
|
|
2448
2448
|
else
|
|
2449
|
-
if (match_len = has_terminal?("fo
|
|
2449
|
+
if (match_len = has_terminal?("fo.", false, index))
|
|
2450
2450
|
r28 = instantiate_node(SyntaxNode,input, index...(index + match_len))
|
|
2451
2451
|
@index += match_len
|
|
2452
2452
|
else
|
|
2453
|
-
terminal_parse_failure('"fo
|
|
2453
|
+
terminal_parse_failure('"fo."')
|
|
2454
2454
|
r28 = nil
|
|
2455
2455
|
end
|
|
2456
2456
|
if r28
|
|
@@ -2459,11 +2459,11 @@ module ScientificNameClean
|
|
|
2459
2459
|
r0.extend(Rank0)
|
|
2460
2460
|
r0.extend(Rank0)
|
|
2461
2461
|
else
|
|
2462
|
-
if (match_len = has_terminal?("
|
|
2462
|
+
if (match_len = has_terminal?("fo ", false, index))
|
|
2463
2463
|
r29 = instantiate_node(SyntaxNode,input, index...(index + match_len))
|
|
2464
2464
|
@index += match_len
|
|
2465
2465
|
else
|
|
2466
|
-
terminal_parse_failure('"
|
|
2466
|
+
terminal_parse_failure('"fo "')
|
|
2467
2467
|
r29 = nil
|
|
2468
2468
|
end
|
|
2469
2469
|
if r29
|
|
@@ -2472,11 +2472,11 @@ module ScientificNameClean
|
|
|
2472
2472
|
r0.extend(Rank0)
|
|
2473
2473
|
r0.extend(Rank0)
|
|
2474
2474
|
else
|
|
2475
|
-
if (match_len = has_terminal?("
|
|
2476
|
-
r30 =
|
|
2475
|
+
if (match_len = has_terminal?("f.", false, index))
|
|
2476
|
+
r30 = instantiate_node(SyntaxNode,input, index...(index + match_len))
|
|
2477
2477
|
@index += match_len
|
|
2478
2478
|
else
|
|
2479
|
-
terminal_parse_failure('"
|
|
2479
|
+
terminal_parse_failure('"f."')
|
|
2480
2480
|
r30 = nil
|
|
2481
2481
|
end
|
|
2482
2482
|
if r30
|
|
@@ -2485,11 +2485,11 @@ module ScientificNameClean
|
|
|
2485
2485
|
r0.extend(Rank0)
|
|
2486
2486
|
r0.extend(Rank0)
|
|
2487
2487
|
else
|
|
2488
|
-
if (match_len = has_terminal?("
|
|
2489
|
-
r31 =
|
|
2488
|
+
if (match_len = has_terminal?("α", false, index))
|
|
2489
|
+
r31 = true
|
|
2490
2490
|
@index += match_len
|
|
2491
2491
|
else
|
|
2492
|
-
terminal_parse_failure('"
|
|
2492
|
+
terminal_parse_failure('"α"')
|
|
2493
2493
|
r31 = nil
|
|
2494
2494
|
end
|
|
2495
2495
|
if r31
|
|
@@ -2498,11 +2498,11 @@ module ScientificNameClean
|
|
|
2498
2498
|
r0.extend(Rank0)
|
|
2499
2499
|
r0.extend(Rank0)
|
|
2500
2500
|
else
|
|
2501
|
-
if (match_len = has_terminal?("
|
|
2502
|
-
r32 =
|
|
2501
|
+
if (match_len = has_terminal?("ββ", false, index))
|
|
2502
|
+
r32 = instantiate_node(SyntaxNode,input, index...(index + match_len))
|
|
2503
2503
|
@index += match_len
|
|
2504
2504
|
else
|
|
2505
|
-
terminal_parse_failure('"
|
|
2505
|
+
terminal_parse_failure('"ββ"')
|
|
2506
2506
|
r32 = nil
|
|
2507
2507
|
end
|
|
2508
2508
|
if r32
|
|
@@ -2511,11 +2511,11 @@ module ScientificNameClean
|
|
|
2511
2511
|
r0.extend(Rank0)
|
|
2512
2512
|
r0.extend(Rank0)
|
|
2513
2513
|
else
|
|
2514
|
-
if (match_len = has_terminal?("
|
|
2514
|
+
if (match_len = has_terminal?("β", false, index))
|
|
2515
2515
|
r33 = true
|
|
2516
2516
|
@index += match_len
|
|
2517
2517
|
else
|
|
2518
|
-
terminal_parse_failure('"
|
|
2518
|
+
terminal_parse_failure('"β"')
|
|
2519
2519
|
r33 = nil
|
|
2520
2520
|
end
|
|
2521
2521
|
if r33
|
|
@@ -2524,11 +2524,11 @@ module ScientificNameClean
|
|
|
2524
2524
|
r0.extend(Rank0)
|
|
2525
2525
|
r0.extend(Rank0)
|
|
2526
2526
|
else
|
|
2527
|
-
if (match_len = has_terminal?("
|
|
2527
|
+
if (match_len = has_terminal?("γ", false, index))
|
|
2528
2528
|
r34 = true
|
|
2529
2529
|
@index += match_len
|
|
2530
2530
|
else
|
|
2531
|
-
terminal_parse_failure('"
|
|
2531
|
+
terminal_parse_failure('"γ"')
|
|
2532
2532
|
r34 = nil
|
|
2533
2533
|
end
|
|
2534
2534
|
if r34
|
|
@@ -2537,11 +2537,11 @@ module ScientificNameClean
|
|
|
2537
2537
|
r0.extend(Rank0)
|
|
2538
2538
|
r0.extend(Rank0)
|
|
2539
2539
|
else
|
|
2540
|
-
if (match_len = has_terminal?("
|
|
2540
|
+
if (match_len = has_terminal?("δ", false, index))
|
|
2541
2541
|
r35 = true
|
|
2542
2542
|
@index += match_len
|
|
2543
2543
|
else
|
|
2544
|
-
terminal_parse_failure('"
|
|
2544
|
+
terminal_parse_failure('"δ"')
|
|
2545
2545
|
r35 = nil
|
|
2546
2546
|
end
|
|
2547
2547
|
if r35
|
|
@@ -2550,11 +2550,11 @@ module ScientificNameClean
|
|
|
2550
2550
|
r0.extend(Rank0)
|
|
2551
2551
|
r0.extend(Rank0)
|
|
2552
2552
|
else
|
|
2553
|
-
if (match_len = has_terminal?("
|
|
2553
|
+
if (match_len = has_terminal?("ε", false, index))
|
|
2554
2554
|
r36 = true
|
|
2555
2555
|
@index += match_len
|
|
2556
2556
|
else
|
|
2557
|
-
terminal_parse_failure('"
|
|
2557
|
+
terminal_parse_failure('"ε"')
|
|
2558
2558
|
r36 = nil
|
|
2559
2559
|
end
|
|
2560
2560
|
if r36
|
|
@@ -2563,11 +2563,11 @@ module ScientificNameClean
|
|
|
2563
2563
|
r0.extend(Rank0)
|
|
2564
2564
|
r0.extend(Rank0)
|
|
2565
2565
|
else
|
|
2566
|
-
if (match_len = has_terminal?("
|
|
2566
|
+
if (match_len = has_terminal?("φ", false, index))
|
|
2567
2567
|
r37 = true
|
|
2568
2568
|
@index += match_len
|
|
2569
2569
|
else
|
|
2570
|
-
terminal_parse_failure('"
|
|
2570
|
+
terminal_parse_failure('"φ"')
|
|
2571
2571
|
r37 = nil
|
|
2572
2572
|
end
|
|
2573
2573
|
if r37
|
|
@@ -2576,11 +2576,11 @@ module ScientificNameClean
|
|
|
2576
2576
|
r0.extend(Rank0)
|
|
2577
2577
|
r0.extend(Rank0)
|
|
2578
2578
|
else
|
|
2579
|
-
if (match_len = has_terminal?("
|
|
2579
|
+
if (match_len = has_terminal?("θ", false, index))
|
|
2580
2580
|
r38 = true
|
|
2581
2581
|
@index += match_len
|
|
2582
2582
|
else
|
|
2583
|
-
terminal_parse_failure('"
|
|
2583
|
+
terminal_parse_failure('"θ"')
|
|
2584
2584
|
r38 = nil
|
|
2585
2585
|
end
|
|
2586
2586
|
if r38
|
|
@@ -2589,11 +2589,11 @@ module ScientificNameClean
|
|
|
2589
2589
|
r0.extend(Rank0)
|
|
2590
2590
|
r0.extend(Rank0)
|
|
2591
2591
|
else
|
|
2592
|
-
if (match_len = has_terminal?("
|
|
2593
|
-
r39 =
|
|
2592
|
+
if (match_len = has_terminal?("μ", false, index))
|
|
2593
|
+
r39 = true
|
|
2594
2594
|
@index += match_len
|
|
2595
2595
|
else
|
|
2596
|
-
terminal_parse_failure('"
|
|
2596
|
+
terminal_parse_failure('"μ"')
|
|
2597
2597
|
r39 = nil
|
|
2598
2598
|
end
|
|
2599
2599
|
if r39
|
|
@@ -2602,11 +2602,11 @@ module ScientificNameClean
|
|
|
2602
2602
|
r0.extend(Rank0)
|
|
2603
2603
|
r0.extend(Rank0)
|
|
2604
2604
|
else
|
|
2605
|
-
if (match_len = has_terminal?("
|
|
2605
|
+
if (match_len = has_terminal?("a.", false, index))
|
|
2606
2606
|
r40 = instantiate_node(SyntaxNode,input, index...(index + match_len))
|
|
2607
2607
|
@index += match_len
|
|
2608
2608
|
else
|
|
2609
|
-
terminal_parse_failure('"
|
|
2609
|
+
terminal_parse_failure('"a."')
|
|
2610
2610
|
r40 = nil
|
|
2611
2611
|
end
|
|
2612
2612
|
if r40
|
|
@@ -2615,11 +2615,11 @@ module ScientificNameClean
|
|
|
2615
2615
|
r0.extend(Rank0)
|
|
2616
2616
|
r0.extend(Rank0)
|
|
2617
2617
|
else
|
|
2618
|
-
if (match_len = has_terminal?("
|
|
2618
|
+
if (match_len = has_terminal?("b.", false, index))
|
|
2619
2619
|
r41 = instantiate_node(SyntaxNode,input, index...(index + match_len))
|
|
2620
2620
|
@index += match_len
|
|
2621
2621
|
else
|
|
2622
|
-
terminal_parse_failure('"
|
|
2622
|
+
terminal_parse_failure('"b."')
|
|
2623
2623
|
r41 = nil
|
|
2624
2624
|
end
|
|
2625
2625
|
if r41
|
|
@@ -2628,11 +2628,11 @@ module ScientificNameClean
|
|
|
2628
2628
|
r0.extend(Rank0)
|
|
2629
2629
|
r0.extend(Rank0)
|
|
2630
2630
|
else
|
|
2631
|
-
if (match_len = has_terminal?("
|
|
2631
|
+
if (match_len = has_terminal?("c.", false, index))
|
|
2632
2632
|
r42 = instantiate_node(SyntaxNode,input, index...(index + match_len))
|
|
2633
2633
|
@index += match_len
|
|
2634
2634
|
else
|
|
2635
|
-
terminal_parse_failure('"
|
|
2635
|
+
terminal_parse_failure('"c."')
|
|
2636
2636
|
r42 = nil
|
|
2637
2637
|
end
|
|
2638
2638
|
if r42
|
|
@@ -2641,11 +2641,11 @@ module ScientificNameClean
|
|
|
2641
2641
|
r0.extend(Rank0)
|
|
2642
2642
|
r0.extend(Rank0)
|
|
2643
2643
|
else
|
|
2644
|
-
if (match_len = has_terminal?("
|
|
2644
|
+
if (match_len = has_terminal?("d.", false, index))
|
|
2645
2645
|
r43 = instantiate_node(SyntaxNode,input, index...(index + match_len))
|
|
2646
2646
|
@index += match_len
|
|
2647
2647
|
else
|
|
2648
|
-
terminal_parse_failure('"
|
|
2648
|
+
terminal_parse_failure('"d."')
|
|
2649
2649
|
r43 = nil
|
|
2650
2650
|
end
|
|
2651
2651
|
if r43
|
|
@@ -2654,11 +2654,11 @@ module ScientificNameClean
|
|
|
2654
2654
|
r0.extend(Rank0)
|
|
2655
2655
|
r0.extend(Rank0)
|
|
2656
2656
|
else
|
|
2657
|
-
if (match_len = has_terminal?("
|
|
2657
|
+
if (match_len = has_terminal?("e.", false, index))
|
|
2658
2658
|
r44 = instantiate_node(SyntaxNode,input, index...(index + match_len))
|
|
2659
2659
|
@index += match_len
|
|
2660
2660
|
else
|
|
2661
|
-
terminal_parse_failure('"
|
|
2661
|
+
terminal_parse_failure('"e."')
|
|
2662
2662
|
r44 = nil
|
|
2663
2663
|
end
|
|
2664
2664
|
if r44
|
|
@@ -2667,11 +2667,11 @@ module ScientificNameClean
|
|
|
2667
2667
|
r0.extend(Rank0)
|
|
2668
2668
|
r0.extend(Rank0)
|
|
2669
2669
|
else
|
|
2670
|
-
if (match_len = has_terminal?("
|
|
2670
|
+
if (match_len = has_terminal?("g.", false, index))
|
|
2671
2671
|
r45 = instantiate_node(SyntaxNode,input, index...(index + match_len))
|
|
2672
2672
|
@index += match_len
|
|
2673
2673
|
else
|
|
2674
|
-
terminal_parse_failure('"
|
|
2674
|
+
terminal_parse_failure('"g."')
|
|
2675
2675
|
r45 = nil
|
|
2676
2676
|
end
|
|
2677
2677
|
if r45
|
|
@@ -2680,11 +2680,11 @@ module ScientificNameClean
|
|
|
2680
2680
|
r0.extend(Rank0)
|
|
2681
2681
|
r0.extend(Rank0)
|
|
2682
2682
|
else
|
|
2683
|
-
if (match_len = has_terminal?("
|
|
2683
|
+
if (match_len = has_terminal?("k.", false, index))
|
|
2684
2684
|
r46 = instantiate_node(SyntaxNode,input, index...(index + match_len))
|
|
2685
2685
|
@index += match_len
|
|
2686
2686
|
else
|
|
2687
|
-
terminal_parse_failure('"
|
|
2687
|
+
terminal_parse_failure('"k."')
|
|
2688
2688
|
r46 = nil
|
|
2689
2689
|
end
|
|
2690
2690
|
if r46
|
|
@@ -2693,11 +2693,11 @@ module ScientificNameClean
|
|
|
2693
2693
|
r0.extend(Rank0)
|
|
2694
2694
|
r0.extend(Rank0)
|
|
2695
2695
|
else
|
|
2696
|
-
if (match_len = has_terminal?("
|
|
2696
|
+
if (match_len = has_terminal?("****", false, index))
|
|
2697
2697
|
r47 = instantiate_node(SyntaxNode,input, index...(index + match_len))
|
|
2698
2698
|
@index += match_len
|
|
2699
2699
|
else
|
|
2700
|
-
terminal_parse_failure('"
|
|
2700
|
+
terminal_parse_failure('"****"')
|
|
2701
2701
|
r47 = nil
|
|
2702
2702
|
end
|
|
2703
2703
|
if r47
|
|
@@ -2706,11 +2706,11 @@ module ScientificNameClean
|
|
|
2706
2706
|
r0.extend(Rank0)
|
|
2707
2707
|
r0.extend(Rank0)
|
|
2708
2708
|
else
|
|
2709
|
-
if (match_len = has_terminal?("
|
|
2710
|
-
r48 =
|
|
2709
|
+
if (match_len = has_terminal?("**", false, index))
|
|
2710
|
+
r48 = instantiate_node(SyntaxNode,input, index...(index + match_len))
|
|
2711
2711
|
@index += match_len
|
|
2712
2712
|
else
|
|
2713
|
-
terminal_parse_failure('"
|
|
2713
|
+
terminal_parse_failure('"**"')
|
|
2714
2714
|
r48 = nil
|
|
2715
2715
|
end
|
|
2716
2716
|
if r48
|
|
@@ -2719,8 +2719,22 @@ module ScientificNameClean
|
|
|
2719
2719
|
r0.extend(Rank0)
|
|
2720
2720
|
r0.extend(Rank0)
|
|
2721
2721
|
else
|
|
2722
|
-
|
|
2723
|
-
|
|
2722
|
+
if (match_len = has_terminal?("*", false, index))
|
|
2723
|
+
r49 = true
|
|
2724
|
+
@index += match_len
|
|
2725
|
+
else
|
|
2726
|
+
terminal_parse_failure('"*"')
|
|
2727
|
+
r49 = nil
|
|
2728
|
+
end
|
|
2729
|
+
if r49
|
|
2730
|
+
r49 = SyntaxNode.new(input, (index-1)...index) if r49 == true
|
|
2731
|
+
r0 = r49
|
|
2732
|
+
r0.extend(Rank0)
|
|
2733
|
+
r0.extend(Rank0)
|
|
2734
|
+
else
|
|
2735
|
+
@index = i0
|
|
2736
|
+
r0 = nil
|
|
2737
|
+
end
|
|
2724
2738
|
end
|
|
2725
2739
|
end
|
|
2726
2740
|
end
|
|
@@ -6195,140 +6209,152 @@ module ScientificNameClean
|
|
|
6195
6209
|
r7 = SyntaxNode.new(input, (index-1)...index) if r7 == true
|
|
6196
6210
|
r2 = r7
|
|
6197
6211
|
else
|
|
6198
|
-
if (match_len = has_terminal?("
|
|
6212
|
+
if (match_len = has_terminal?("del", false, index))
|
|
6199
6213
|
r8 = instantiate_node(SyntaxNode,input, index...(index + match_len))
|
|
6200
6214
|
@index += match_len
|
|
6201
6215
|
else
|
|
6202
|
-
terminal_parse_failure('"
|
|
6216
|
+
terminal_parse_failure('"del"')
|
|
6203
6217
|
r8 = nil
|
|
6204
6218
|
end
|
|
6205
6219
|
if r8
|
|
6206
6220
|
r8 = SyntaxNode.new(input, (index-1)...index) if r8 == true
|
|
6207
6221
|
r2 = r8
|
|
6208
6222
|
else
|
|
6209
|
-
if (match_len = has_terminal?("
|
|
6223
|
+
if (match_len = has_terminal?("des", false, index))
|
|
6210
6224
|
r9 = instantiate_node(SyntaxNode,input, index...(index + match_len))
|
|
6211
6225
|
@index += match_len
|
|
6212
6226
|
else
|
|
6213
|
-
terminal_parse_failure('"
|
|
6227
|
+
terminal_parse_failure('"des"')
|
|
6214
6228
|
r9 = nil
|
|
6215
6229
|
end
|
|
6216
6230
|
if r9
|
|
6217
6231
|
r9 = SyntaxNode.new(input, (index-1)...index) if r9 == true
|
|
6218
6232
|
r2 = r9
|
|
6219
6233
|
else
|
|
6220
|
-
if (match_len = has_terminal?("
|
|
6234
|
+
if (match_len = has_terminal?("den", false, index))
|
|
6221
6235
|
r10 = instantiate_node(SyntaxNode,input, index...(index + match_len))
|
|
6222
6236
|
@index += match_len
|
|
6223
6237
|
else
|
|
6224
|
-
terminal_parse_failure('"
|
|
6238
|
+
terminal_parse_failure('"den"')
|
|
6225
6239
|
r10 = nil
|
|
6226
6240
|
end
|
|
6227
6241
|
if r10
|
|
6228
6242
|
r10 = SyntaxNode.new(input, (index-1)...index) if r10 == true
|
|
6229
6243
|
r2 = r10
|
|
6230
6244
|
else
|
|
6231
|
-
if (match_len = has_terminal?("
|
|
6245
|
+
if (match_len = has_terminal?("della", false, index))
|
|
6232
6246
|
r11 = instantiate_node(SyntaxNode,input, index...(index + match_len))
|
|
6233
6247
|
@index += match_len
|
|
6234
6248
|
else
|
|
6235
|
-
terminal_parse_failure('"
|
|
6249
|
+
terminal_parse_failure('"della"')
|
|
6236
6250
|
r11 = nil
|
|
6237
6251
|
end
|
|
6238
6252
|
if r11
|
|
6239
6253
|
r11 = SyntaxNode.new(input, (index-1)...index) if r11 == true
|
|
6240
6254
|
r2 = r11
|
|
6241
6255
|
else
|
|
6242
|
-
if (match_len = has_terminal?("
|
|
6256
|
+
if (match_len = has_terminal?("dela", false, index))
|
|
6243
6257
|
r12 = instantiate_node(SyntaxNode,input, index...(index + match_len))
|
|
6244
6258
|
@index += match_len
|
|
6245
6259
|
else
|
|
6246
|
-
terminal_parse_failure('"
|
|
6260
|
+
terminal_parse_failure('"dela"')
|
|
6247
6261
|
r12 = nil
|
|
6248
6262
|
end
|
|
6249
6263
|
if r12
|
|
6250
6264
|
r12 = SyntaxNode.new(input, (index-1)...index) if r12 == true
|
|
6251
6265
|
r2 = r12
|
|
6252
6266
|
else
|
|
6253
|
-
if (match_len = has_terminal?("
|
|
6267
|
+
if (match_len = has_terminal?("de", false, index))
|
|
6254
6268
|
r13 = instantiate_node(SyntaxNode,input, index...(index + match_len))
|
|
6255
6269
|
@index += match_len
|
|
6256
6270
|
else
|
|
6257
|
-
terminal_parse_failure('"
|
|
6271
|
+
terminal_parse_failure('"de"')
|
|
6258
6272
|
r13 = nil
|
|
6259
6273
|
end
|
|
6260
6274
|
if r13
|
|
6261
6275
|
r13 = SyntaxNode.new(input, (index-1)...index) if r13 == true
|
|
6262
6276
|
r2 = r13
|
|
6263
6277
|
else
|
|
6264
|
-
if (match_len = has_terminal?("
|
|
6278
|
+
if (match_len = has_terminal?("di", false, index))
|
|
6265
6279
|
r14 = instantiate_node(SyntaxNode,input, index...(index + match_len))
|
|
6266
6280
|
@index += match_len
|
|
6267
6281
|
else
|
|
6268
|
-
terminal_parse_failure('"
|
|
6282
|
+
terminal_parse_failure('"di"')
|
|
6269
6283
|
r14 = nil
|
|
6270
6284
|
end
|
|
6271
6285
|
if r14
|
|
6272
6286
|
r14 = SyntaxNode.new(input, (index-1)...index) if r14 == true
|
|
6273
6287
|
r2 = r14
|
|
6274
6288
|
else
|
|
6275
|
-
if (match_len = has_terminal?("
|
|
6289
|
+
if (match_len = has_terminal?("du", false, index))
|
|
6276
6290
|
r15 = instantiate_node(SyntaxNode,input, index...(index + match_len))
|
|
6277
6291
|
@index += match_len
|
|
6278
6292
|
else
|
|
6279
|
-
terminal_parse_failure('"
|
|
6293
|
+
terminal_parse_failure('"du"')
|
|
6280
6294
|
r15 = nil
|
|
6281
6295
|
end
|
|
6282
6296
|
if r15
|
|
6283
6297
|
r15 = SyntaxNode.new(input, (index-1)...index) if r15 == true
|
|
6284
6298
|
r2 = r15
|
|
6285
6299
|
else
|
|
6286
|
-
if (match_len = has_terminal?("
|
|
6300
|
+
if (match_len = has_terminal?("do", false, index))
|
|
6287
6301
|
r16 = instantiate_node(SyntaxNode,input, index...(index + match_len))
|
|
6288
6302
|
@index += match_len
|
|
6289
6303
|
else
|
|
6290
|
-
terminal_parse_failure('"
|
|
6304
|
+
terminal_parse_failure('"do"')
|
|
6291
6305
|
r16 = nil
|
|
6292
6306
|
end
|
|
6293
6307
|
if r16
|
|
6294
6308
|
r16 = SyntaxNode.new(input, (index-1)...index) if r16 == true
|
|
6295
6309
|
r2 = r16
|
|
6296
6310
|
else
|
|
6297
|
-
if (match_len = has_terminal?("
|
|
6311
|
+
if (match_len = has_terminal?("la", false, index))
|
|
6298
6312
|
r17 = instantiate_node(SyntaxNode,input, index...(index + match_len))
|
|
6299
6313
|
@index += match_len
|
|
6300
6314
|
else
|
|
6301
|
-
terminal_parse_failure('"
|
|
6315
|
+
terminal_parse_failure('"la"')
|
|
6302
6316
|
r17 = nil
|
|
6303
6317
|
end
|
|
6304
6318
|
if r17
|
|
6305
6319
|
r17 = SyntaxNode.new(input, (index-1)...index) if r17 == true
|
|
6306
6320
|
r2 = r17
|
|
6307
6321
|
else
|
|
6308
|
-
if (match_len = has_terminal?("
|
|
6322
|
+
if (match_len = has_terminal?("ter", false, index))
|
|
6309
6323
|
r18 = instantiate_node(SyntaxNode,input, index...(index + match_len))
|
|
6310
6324
|
@index += match_len
|
|
6311
6325
|
else
|
|
6312
|
-
terminal_parse_failure('"
|
|
6326
|
+
terminal_parse_failure('"ter"')
|
|
6313
6327
|
r18 = nil
|
|
6314
6328
|
end
|
|
6315
6329
|
if r18
|
|
6316
6330
|
r18 = SyntaxNode.new(input, (index-1)...index) if r18 == true
|
|
6317
6331
|
r2 = r18
|
|
6318
6332
|
else
|
|
6319
|
-
if (match_len = has_terminal?("
|
|
6333
|
+
if (match_len = has_terminal?("van", false, index))
|
|
6320
6334
|
r19 = instantiate_node(SyntaxNode,input, index...(index + match_len))
|
|
6321
6335
|
@index += match_len
|
|
6322
6336
|
else
|
|
6323
|
-
terminal_parse_failure('"
|
|
6337
|
+
terminal_parse_failure('"van"')
|
|
6324
6338
|
r19 = nil
|
|
6325
6339
|
end
|
|
6326
6340
|
if r19
|
|
6327
6341
|
r19 = SyntaxNode.new(input, (index-1)...index) if r19 == true
|
|
6328
6342
|
r2 = r19
|
|
6329
6343
|
else
|
|
6330
|
-
|
|
6331
|
-
|
|
6344
|
+
if (match_len = has_terminal?("von", false, index))
|
|
6345
|
+
r20 = instantiate_node(SyntaxNode,input, index...(index + match_len))
|
|
6346
|
+
@index += match_len
|
|
6347
|
+
else
|
|
6348
|
+
terminal_parse_failure('"von"')
|
|
6349
|
+
r20 = nil
|
|
6350
|
+
end
|
|
6351
|
+
if r20
|
|
6352
|
+
r20 = SyntaxNode.new(input, (index-1)...index) if r20 == true
|
|
6353
|
+
r2 = r20
|
|
6354
|
+
else
|
|
6355
|
+
@index = i2
|
|
6356
|
+
r2 = nil
|
|
6357
|
+
end
|
|
6332
6358
|
end
|
|
6333
6359
|
end
|
|
6334
6360
|
end
|
|
@@ -6348,16 +6374,16 @@ module ScientificNameClean
|
|
|
6348
6374
|
end
|
|
6349
6375
|
s0 << r2
|
|
6350
6376
|
if r2
|
|
6351
|
-
|
|
6352
|
-
|
|
6353
|
-
if
|
|
6354
|
-
@index =
|
|
6355
|
-
|
|
6377
|
+
i21 = index
|
|
6378
|
+
r22 = _nt_space_hard
|
|
6379
|
+
if r22
|
|
6380
|
+
@index = i21
|
|
6381
|
+
r21 = instantiate_node(SyntaxNode,input, index...index)
|
|
6356
6382
|
else
|
|
6357
|
-
@index =
|
|
6358
|
-
|
|
6383
|
+
@index = i21
|
|
6384
|
+
r21 = nil
|
|
6359
6385
|
end
|
|
6360
|
-
s0 <<
|
|
6386
|
+
s0 << r21
|
|
6361
6387
|
end
|
|
6362
6388
|
end
|
|
6363
6389
|
if s0.last
|
|
@@ -560,7 +560,7 @@ grammar ScientificNameClean
|
|
|
560
560
|
end
|
|
561
561
|
|
|
562
562
|
rule rank
|
|
563
|
-
("morph."/"f.sp."/"B "/"ssp."/"ssp "/"mut."/"nat "/"nothosubsp."/"convar."/"pseudovar."/"sect."/"ser."/"var."/"subvar."/ "[var.]" /"var "/"subsp."/"subsp "/"subf."/"race "/"forma."/"forma "/"fma."/"fma "/"form."/"form "/"fo."/"fo "/"f."/"α"/"ββ"/"β"/"γ"/"δ"/"ε"/"φ"/"θ"/"μ"/"a."/"b."/"c."/"d."/"e."/"g."/"k."/"****"/"**"/"*")
|
|
563
|
+
("morph."/"f.sp."/"B "/"ssp."/"ssp "/"mut."/"nat "/"nothosubsp."/"convar."/"nvar."/"pseudovar."/"sect."/"ser."/"var."/"subvar."/ "[var.]" /"var "/"subsp."/"subsp "/"subf."/"race "/"forma."/"forma "/"fma."/"fma "/"form."/"form "/"fo."/"fo "/"f."/"α"/"ββ"/"β"/"γ"/"δ"/"ε"/"φ"/"θ"/"μ"/"a."/"b."/"c."/"d."/"e."/"g."/"k."/"****"/"**"/"*")
|
|
564
564
|
{
|
|
565
565
|
def value
|
|
566
566
|
text_value.strip
|
|
@@ -1202,7 +1202,7 @@ grammar ScientificNameClean
|
|
|
1202
1202
|
end
|
|
1203
1203
|
|
|
1204
1204
|
rule author_prefix_word
|
|
1205
|
-
space ("ab"/"af"/"bis"/"da"/"der"/"des"/"den"/"della"/"dela"/"de"/"di"/"du"/"do"/"la"/"ter"/"van"/"von") &space_hard {
|
|
1205
|
+
space ("ab"/"af"/"bis"/"da"/"der"/"del"/"des"/"den"/"della"/"dela"/"de"/"di"/"du"/"do"/"la"/"ter"/"van"/"von") &space_hard {
|
|
1206
1206
|
def value
|
|
1207
1207
|
text_value
|
|
1208
1208
|
end
|
data/lib/biodiversity/version.rb
CHANGED
data/spec/files/test_data.txt
CHANGED
|
@@ -156,7 +156,7 @@ Hydnellum scrobiculatum zonatum|{"scientificName":{"id":"22af845f-773e-502e-be46
|
|
|
156
156
|
Mus musculus hortulanus|{"scientificName":{"id":"5fd9a4aa-9fa8-5200-909a-6c9ec8a9a088", "parsed":true, "parser_version":"test_version", "verbatim":"Mus musculus hortulanus", "normalized":"Mus musculus hortulanus", "canonical":"Mus musculus hortulanus", "hybrid":false, "details":[{"genus":{"string":"Mus"}, "species":{"string":"musculus"}, "infraspecies":[{"string":"hortulanus", "rank":"n/a"}]}], "parser_run":1, "positions":{"0":["genus", 3], "4":["species", 12], "13":["infraspecies", 23]}}}
|
|
157
157
|
Ortygospiza atricollis mülleri|{"scientificName":{"id":"1ee6bf1d-90d8-5c4b-98c1-2646c301d07c", "parsed":true, "parser_version":"test_version", "verbatim":"Ortygospiza atricollis mülleri", "normalized":"Ortygospiza atricollis mulleri", "canonical":"Ortygospiza atricollis mulleri", "hybrid":false, "details":[{"genus":{"string":"Ortygospiza"}, "species":{"string":"atricollis"}, "infraspecies":[{"string":"mulleri", "rank":"n/a"}]}], "parser_run":2, "positions":{"0":["genus", 11], "12":["species", 22], "23":["infraspecies", 30]}}}
|
|
158
158
|
|
|
159
|
-
#infraspecies with
|
|
159
|
+
#infraspecies with ranks
|
|
160
160
|
Potamogeton iilinoensis var. ventanicola (Hicken) Horn af Rantzien|{"scientificName":{"id":"e7888abd-4365-5d74-8d5f-a69c8196328e", "parsed":true, "parser_version":"test_version", "verbatim":"Potamogeton iilinoensis var. ventanicola (Hicken) Horn af Rantzien", "normalized":"Potamogeton iilinoensis var. ventanicola (Hicken) Horn af Rantzien", "canonical":"Potamogeton iilinoensis ventanicola", "hybrid":false, "details":[{"genus":{"string":"Potamogeton"}, "species":{"string":"iilinoensis"}, "infraspecies":[{"string":"ventanicola", "rank":"var.", "authorship":"(Hicken) Horn af Rantzien", "combinationAuthorTeam":{"authorTeam":"Horn af Rantzien", "author":["Horn af Rantzien"]}, "basionymAuthorTeam":{"authorTeam":"Hicken", "author":["Hicken"]}}]}], "parser_run":1, "positions":{"0":["genus", 11], "12":["species", 23], "24":["infraspecific_type", 28], "29":["infraspecies", 40], "42":["author_word", 48], "50":["author_word", 54], "55":["author_word", 57], "58":["author_word", 66]}}}
|
|
161
161
|
Triticum repens var. vulgäre|{"scientificName":{"id":"3421b13b-aaa9-5234-bc1d-9d3fe7a6b19e", "parsed":true, "parser_version":"test_version", "verbatim":"Triticum repens var. vulgäre", "normalized":"Triticum repens var. vulgare", "canonical":"Triticum repens vulgare", "hybrid":false, "details":[{"genus":{"string":"Triticum"}, "species":{"string":"repens"}, "infraspecies":[{"string":"vulgare", "rank":"var."}]}], "parser_run":2, "positions":{"0":["genus", 8], "9":["species", 15], "16":["infraspecific_type", 20], "21":["infraspecies", 28]}}}
|
|
162
162
|
Aus bus Linn. var. bus|{"scientificName":{"id":"2a6e45e2-5737-514b-8055-06f8a878dd36", "parsed":true, "parser_version":"test_version", "verbatim":"Aus bus Linn. var. bus", "normalized":"Aus bus Linn. var. bus", "canonical":"Aus bus bus", "hybrid":false, "details":[{"genus":{"string":"Aus"}, "species":{"string":"bus", "authorship":"Linn.", "basionymAuthorTeam":{"authorTeam":"Linn.", "author":["Linn."]}}, "infraspecies":[{"string":"bus", "rank":"var."}]}], "parser_run":1, "positions":{"0":["genus", 3], "4":["species", 7], "8":["author_word", 13], "14":["infraspecific_type", 18], "19":["infraspecies", 22]}}}
|
|
@@ -179,6 +179,7 @@ Armeria maaritima (Mill.) Willd. fma. originaria Bern.|{"scientificName":{"id":"
|
|
|
179
179
|
Cotoneaster (Pyracantha) rogersiana var.aurantiaca|{"scientificName":{"id":"86716b35-27ce-5d21-ab18-e8bb0c5d80be", "parsed":true, "parser_version":"test_version", "verbatim":"Cotoneaster (Pyracantha) rogersiana var.aurantiaca", "normalized":"Cotoneaster (Pyracantha) rogersiana var. aurantiaca", "canonical":"Cotoneaster rogersiana aurantiaca", "hybrid":false, "details":[{"genus":{"string":"Cotoneaster"}, "infragenus":{"string":"Pyracantha"}, "species":{"string":"rogersiana"}, "infraspecies":[{"string":"aurantiaca", "rank":"var."}]}], "parser_run":1, "positions":{"0":["genus", 11], "13":["infragenus", 23], "25":["species", 35], "36":["infraspecific_type", 40], "40":["infraspecies", 50]}}}
|
|
180
180
|
Poa annua fo varia|{"scientificName":{"id":"32838647-3c46-509b-a81b-62d24940845f", "parsed":true, "parser_version":"test_version", "verbatim":"Poa annua fo varia", "normalized":"Poa annua fo varia", "canonical":"Poa annua varia", "hybrid":false, "details":[{"genus":{"string":"Poa"}, "species":{"string":"annua"}, "infraspecies":[{"string":"varia", "rank":"fo"}]}], "parser_run":1, "positions":{"0":["genus", 3], "4":["species", 9], "10":["infraspecific_type", 12], "13":["infraspecies", 18]}}}
|
|
181
181
|
Physarum globuliferum forma. flavum Leontyev & Dudka|{"scientificName":{"id":"bbcecb18-4484-528b-a8b9-93e1634d31b5", "parsed":true, "parser_version":"test_version", "verbatim":"Physarum globuliferum forma. flavum Leontyev & Dudka", "normalized":"Physarum globuliferum forma. flavum Leontyev & Dudka", "canonical":"Physarum globuliferum flavum", "hybrid":false, "details":[{"genus":{"string":"Physarum"}, "species":{"string":"globuliferum"}, "infraspecies":[{"string":"flavum", "rank":"forma.", "authorship":"Leontyev & Dudka", "basionymAuthorTeam":{"authorTeam":"Leontyev & Dudka", "author":["Leontyev", "Dudka"]}}]}], "parser_run":1, "positions":{"0":["genus", 8], "9":["species", 21], "22":["infraspecific_type", 28], "29":["infraspecies", 35], "36":["author_word", 44], "47":["author_word", 52]}}}
|
|
182
|
+
Crataegus curvisepala nvar. naviculiformis T. Petauer|{"scientificName":{"id":"f3e2ccac-4844-57a7-8903-4e3b6a0d0851", "parsed":true, "parser_version":"test_version", "verbatim":"Crataegus curvisepala nvar. naviculiformis T. Petauer", "normalized":"Crataegus curvisepala nvar. naviculiformis T. Petauer", "canonical":"Crataegus curvisepala naviculiformis", "hybrid":false, "details":[{"genus":{"string":"Crataegus"}, "species":{"string":"curvisepala"}, "infraspecies":[{"string":"naviculiformis", "rank":"nvar.", "authorship":"T. Petauer", "basionymAuthorTeam":{"authorTeam":"T. Petauer", "author":["T. Petauer"]}}]}], "parser_run":1, "positions":{"0":["genus", 9], "10":["species", 21], "22":["infraspecific_type", 27], "28":["infraspecies", 42], "43":["author_word", 45], "46":["author_word", 53]}}}
|
|
182
183
|
#TODO: Homalanthus nutans (Mull.Arg.) Benth. & Hook. f. ex Drake|{}
|
|
183
184
|
|
|
184
185
|
#infraspecies_multiple
|
|
@@ -230,6 +231,7 @@ Stagonospora polyspora M.T. Lucas & Sousa da Câmara 1934|{"scientificName":{"id
|
|
|
230
231
|
Stagonospora polyspora M.T. Lucas et Sousa da Câmara 1934|{"scientificName":{"id":"a8a48393-0ca9-5916-83e3-fb32b7b0c422", "parsed":true, "parser_version":"test_version", "parser_run":1,"verbatim":"Stagonospora polyspora M.T. Lucas et 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 et Sousa da C\u00e2mara 1934","basionymAuthorTeam":{"authorTeam":"M.T. Lucas et 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],"37":["author_word",42],"43":["author_word",45],"46":["author_word",52],"53":["year",57]}}}
|
|
231
232
|
Cladoniicola staurospora Diederich, van den Boom & Aptroot 2001|{"scientificName":{"id":"e59e3b01-311d-5dda-88e7-7e821440f5ee", "parsed":true, "parser_version":"test_version", "parser_run":1,"verbatim":"Cladoniicola staurospora Diederich, van den Boom & Aptroot 2001","normalized":"Cladoniicola staurospora Diederich, van den Boom & Aptroot 2001","canonical":"Cladoniicola staurospora","hybrid":false,"details":[{"genus":{"string":"Cladoniicola"},"species":{"string":"staurospora","authorship":"Diederich, van den Boom & Aptroot 2001","basionymAuthorTeam":{"authorTeam":"Diederich, van den Boom & Aptroot","author":["Diederich","van den Boom","Aptroot"],"year":"2001"}}}],"positions":{"0":["genus",12],"13":["species",24],"25":["author_word",34],"36":["author_word",39],"40":["author_word",43],"44":["author_word",48],"51":["author_word",58],"59":["year",63]}}}
|
|
232
233
|
Yarrowia lipolytica var. lipolytica (Wick., Kurtzman & E.A. Herrm.) Van der Walt & Arx 1981|{"scientificName":{"id":"e649d828-0ae9-5b5b-b079-1485c9bbf872", "parsed":true, "parser_version":"test_version", "verbatim":"Yarrowia lipolytica var. lipolytica (Wick., Kurtzman & E.A. Herrm.) Van der Walt & Arx 1981", "normalized":"Yarrowia lipolytica var. lipolytica (Wick., Kurtzman & E.A. Herrm.) Van der Walt & Arx 1981", "canonical":"Yarrowia lipolytica lipolytica", "hybrid":false, "details":[{"genus":{"string":"Yarrowia"}, "species":{"string":"lipolytica"}, "infraspecies":[{"string":"lipolytica", "rank":"var.", "authorship":"(Wick., Kurtzman & E.A. Herrm.) Van der Walt & Arx 1981", "combinationAuthorTeam":{"authorTeam":"Van der Walt & Arx", "author":["Van der Walt", "Arx"], "year":"1981"}, "basionymAuthorTeam":{"authorTeam":"Wick., Kurtzman & E.A. Herrm.", "author":["Wick.", "Kurtzman", "E.A. Herrm."]}}]}], "parser_run":1, "positions":{"0":["genus", 8], "9":["species", 19], "20":["infraspecific_type", 24], "25":["infraspecies", 35], "37":["author_word", 42], "44":["author_word", 52], "55":["author_word", 59], "60":["author_word", 66], "68":["author_word", 71], "72":["author_word", 75], "76":["author_word", 80], "83":["author_word", 86], "87":["year", 91]}}}
|
|
234
|
+
Armeria carpetana ssp. carpetana H. del Villar|{"scientificName":{"id":"4b16116e-549d-56bf-959a-ff11edb25021", "parsed":true, "parser_version":"test_version", "verbatim":"Armeria carpetana ssp. carpetana H. del Villar", "normalized":"Armeria carpetana ssp. carpetana H. del Villar", "canonical":"Armeria carpetana carpetana", "hybrid":false, "details":[{"genus":{"string":"Armeria"}, "species":{"string":"carpetana"}, "infraspecies":[{"string":"carpetana", "rank":"ssp.", "authorship":"H. del Villar", "basionymAuthorTeam":{"authorTeam":"H. del Villar", "author":["H. del Villar"]}}]}], "parser_run":1, "positions":{"0":["genus", 7], "8":["species", 17], "18":["infraspecific_type", 22], "23":["infraspecies", 32], "33":["author_word", 35], "36":["author_word", 39], "40":["author_word", 46]}}}
|
|
233
235
|
Physalospora rubiginosa (Fr.) anon.|{"scientificName":{"id":"85151e19-ab25-5ba5-8a19-47a5859c41bb", "parsed":true, "parser_version":"test_version", "parser_run":1,"verbatim":"Physalospora rubiginosa (Fr.) anon.","normalized":"Physalospora rubiginosa (Fr.) anon.","canonical":"Physalospora rubiginosa","hybrid":false,"details":[{"genus":{"string":"Physalospora"},"species":{"string":"rubiginosa","authorship":"(Fr.) anon.","combinationAuthorTeam":{"authorTeam":"anon.","author":["unknown"]},"basionymAuthorTeam":{"authorTeam":"Fr.","author":["Fr."]}}}],"positions":{"0":["genus",12],"13":["species",23],"25":["author_word",28],"30":["unknown_author",35]}}}
|
|
234
236
|
Pleurotus ëous (Berk.) Sacc. 1887|{"scientificName":{"id":"fe8c9a43-3480-5598-891d-e2a864781d13", "parsed":true, "parser_version":"test_version", "verbatim":"Pleurotus ëous (Berk.) Sacc. 1887", "normalized":"Pleurotus eous (Berk.) Sacc. 1887", "canonical":"Pleurotus eous", "hybrid":false, "details":[{"genus":{"string":"Pleurotus"}, "species":{"string":"eous", "authorship":"(Berk.) Sacc. 1887", "combinationAuthorTeam":{"authorTeam":"Sacc.", "author":["Sacc."], "year":"1887"}, "basionymAuthorTeam":{"authorTeam":"Berk.", "author":["Berk."]}}}], "parser_run":1, "positions":{"0":["genus", 9], "10":["species", 14], "16":["author_word", 21], "23":["author_word", 28], "29":["year", 33]}}}
|
|
235
237
|
Lecanora wetmorei Śliwa 2004|{"scientificName":{"id":"50e874e9-f807-5446-a416-ca459475b1db", "parsed":true, "parser_version":"test_version", "parser_run":1,"verbatim":"Lecanora wetmorei \u015aliwa 2004","normalized":"Lecanora wetmorei \u015aliwa 2004","canonical":"Lecanora wetmorei","hybrid":false,"details":[{"genus":{"string":"Lecanora"},"species":{"string":"wetmorei","authorship":"\u015aliwa 2004","basionymAuthorTeam":{"authorTeam":"\u015aliwa","author":["\u015aliwa"],"year":"2004"}}}],"positions":{"0":["genus",8],"9":["species",17],"18":["author_word",23],"24":["year",28]}}}
|
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.4
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Dmitry Mozzherin
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2018-02-
|
|
11
|
+
date: 2018-02-07 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: treetop
|