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: 579045e44f8defe5c6ff5e7aa1d7222c8277cf3d
4
- data.tar.gz: 212ec44eb46ae2d928be453e7aeced12cd509a1f
3
+ metadata.gz: d9db331e5d06e6b52792e8d4c70763429604ff2e
4
+ data.tar.gz: bc2c2626bf49768cb823974cfef891096b96b58c
5
5
  SHA512:
6
- metadata.gz: 73203da9ae5c1d35afc0899e556e469b44b84a12fabc76d128b21a22b295547589441e47a695b02f26c59cd0e61adedaf42185e5724374b65c2c6c78dc065d14
7
- data.tar.gz: 8c88fa20d52488066d23adfb7452f81354fcc61c16da3ad23c58ba7dce6733ecb7112f48999b952a299029735d6a3b67d011778a4bbe1f2496e11a2ab87e10d9
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.
@@ -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?("pseudovar.", false, index))
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('"pseudovar."')
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?("sect.", false, index))
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('"sect."')
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?("ser.", false, index))
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('"ser."')
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?("var.", false, index))
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('"var."')
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?("subvar.", false, index))
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('"subvar."')
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?("[var.]", false, index))
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('"[var.]"')
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 ", false, index))
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?("subsp.", false, index))
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('"subsp."')
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 ", false, index))
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?("subf.", false, index))
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('"subf."')
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?("race ", false, index))
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('"race "')
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?("forma.", false, index))
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('"forma."')
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 ", false, index))
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?("fma.", false, index))
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('"fma."')
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 ", false, index))
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?("form.", false, index))
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('"form."')
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 ", false, index))
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?("fo.", false, index))
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('"fo."')
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 ", false, index))
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?("f.", false, index))
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('"f."')
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?("α", false, index))
2476
- r30 = true
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?("ββ", false, index))
2489
- r31 = instantiate_node(SyntaxNode,input, index...(index + match_len))
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?("β", false, index))
2502
- r32 = true
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?("γ", false, index))
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?("δ", false, index))
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?("ε", false, index))
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?("φ", false, index))
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?("θ", false, index))
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?("μ", false, index))
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?("a.", false, index))
2593
- r39 = instantiate_node(SyntaxNode,input, index...(index + match_len))
2592
+ if (match_len = has_terminal?("μ", false, index))
2593
+ r39 = true
2594
2594
  @index += match_len
2595
2595
  else
2596
- terminal_parse_failure('"a."')
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?("b.", false, index))
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('"b."')
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?("c.", false, index))
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('"c."')
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?("d.", false, index))
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('"d."')
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?("e.", false, index))
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('"e."')
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?("g.", false, index))
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('"g."')
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?("k.", false, index))
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('"k."')
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?("****", false, index))
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?("**", false, index))
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?("*", false, index))
2710
- r48 = true
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
- @index = i0
2723
- r0 = nil
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?("des", false, index))
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('"des"')
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?("den", false, index))
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('"den"')
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?("della", false, index))
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('"della"')
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?("dela", false, index))
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('"dela"')
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?("de", false, index))
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('"de"')
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?("di", false, index))
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('"di"')
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?("du", false, index))
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('"du"')
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?("do", false, index))
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('"do"')
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?("la", false, index))
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('"la"')
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?("ter", false, index))
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('"ter"')
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?("van", false, index))
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('"van"')
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?("von", false, index))
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('"von"')
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
- @index = i2
6331
- r2 = nil
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
- i20 = index
6352
- r21 = _nt_space_hard
6353
- if r21
6354
- @index = i20
6355
- r20 = instantiate_node(SyntaxNode,input, index...index)
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 = i20
6358
- r20 = nil
6383
+ @index = i21
6384
+ r21 = nil
6359
6385
  end
6360
- s0 << r20
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
@@ -1,3 +1,3 @@
1
1
  module Biodiversity
2
- VERSION = "3.4.3"
2
+ VERSION = "3.4.4"
3
3
  end
@@ -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 rank
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.3
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-02 00:00:00.000000000 Z
11
+ date: 2018-02-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: treetop