biodiversity 3.4.3 → 3.4.4
Sign up to get free protection for your applications and to get access to all the features.
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
|