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: 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