@fpw/en-wiktionary-la-modules 0.1.2 → 0.1.5
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.
- package/dist/modules/conjugation/LaVerb.d.ts +3 -1
- package/dist/modules/conjugation/LaVerb.js +201 -32
- package/dist/modules/conjugation/LaVerb.js.map +1 -1
- package/dist/modules/conjugation/VerbType.d.ts +5 -1
- package/dist/modules/conjugation/VerbType.js +4 -0
- package/dist/modules/conjugation/VerbType.js.map +1 -1
- package/dist/modules/declination/LaAdjData.d.ts +1 -1
- package/dist/modules/declination/LaAdjData.js +45 -24
- package/dist/modules/declination/LaAdjData.js.map +1 -1
- package/dist/modules/declination/LaNominal.d.ts +9 -5
- package/dist/modules/declination/LaNominal.js +195 -171
- package/dist/modules/declination/LaNominal.js.map +1 -1
- package/dist/modules/declination/LaNounData.js +65 -64
- package/dist/modules/declination/LaNounData.js.map +1 -1
- package/dist/modules/declination/LaPersonalPronoun.js +1 -0
- package/dist/modules/declination/LaPersonalPronoun.js.map +1 -1
- package/dist/modules/declination/NominalType.d.ts +116 -0
- package/dist/modules/declination/NominalType.js +142 -0
- package/dist/modules/declination/NominalType.js.map +1 -0
- package/dist/modules/headword/HeadwordParser.js +2 -1
- package/dist/modules/headword/HeadwordParser.js.map +1 -1
- package/package.json +1 -1
- package/src/modules/conjugation/LaVerb.ts +206 -35
- package/src/modules/conjugation/VerbType.ts +4 -0
- package/src/modules/declination/LaAdjData.ts +47 -24
- package/src/modules/declination/LaNominal.ts +223 -187
- package/src/modules/declination/LaNounData.ts +67 -66
- package/src/modules/declination/LaPersonalPronoun.ts +1 -0
- package/src/modules/declination/NominalType.ts +153 -0
- package/src/modules/headword/HeadwordParser.ts +2 -1
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "@fpw/en-wiktionary-la-modules",
|
|
3
3
|
"author": "Folke Will",
|
|
4
4
|
"license": "CC-BY-SA-3.0",
|
|
5
|
-
"version": "0.1.
|
|
5
|
+
"version": "0.1.5",
|
|
6
6
|
"description": "Reimplementation of some Latin modules of en.wikipedia.org, especially inflections",
|
|
7
7
|
"repository": {
|
|
8
8
|
"type": "git",
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* A few new options to suppress certain rate forms were added.
|
|
6
6
|
*
|
|
7
7
|
* Original source: https://en.wiktionary.org/wiki/Module:la-verb
|
|
8
|
-
* Based on version: https://en.wiktionary.org/w/index.php?title=Module:la-verb&oldid=
|
|
8
|
+
* Based on version: https://en.wiktionary.org/w/index.php?title=Module:la-verb&oldid=67964189
|
|
9
9
|
*
|
|
10
10
|
* Lua idioms, function and variable names kept as in the original in order to easily
|
|
11
11
|
* backport later changes to this implementation.
|
|
@@ -41,6 +41,9 @@ export interface ConjOptions {
|
|
|
41
41
|
// suppress poetic forms that are set using options like poetsyncperf
|
|
42
42
|
suppressPoet?: boolean;
|
|
43
43
|
|
|
44
|
+
// suppress archaic forms
|
|
45
|
+
suppressArchaic?: boolean;
|
|
46
|
+
|
|
44
47
|
// use short i in perfect infinitive of īre (iisse vs īsse)
|
|
45
48
|
ireWithShortPerfInf?: boolean;
|
|
46
49
|
|
|
@@ -135,6 +138,7 @@ export class LaVerb {
|
|
|
135
138
|
"np",
|
|
136
139
|
"highlydef",
|
|
137
140
|
"sigm",
|
|
141
|
+
"sigmpasv",
|
|
138
142
|
]);
|
|
139
143
|
|
|
140
144
|
private static potential_lemma_slots = [
|
|
@@ -264,6 +268,7 @@ export class LaVerb {
|
|
|
264
268
|
this.override(data, args);
|
|
265
269
|
this.set_linked_forms(data, typeinfo);
|
|
266
270
|
this.add_prefix_suffix(data);
|
|
271
|
+
this.notes_override(data, args);
|
|
267
272
|
|
|
268
273
|
return {
|
|
269
274
|
templateType: "conjugation",
|
|
@@ -349,6 +354,72 @@ export class LaVerb {
|
|
|
349
354
|
}
|
|
350
355
|
this.make_pres_3rd(data, typeinfo, typeinfo.pres_stem);
|
|
351
356
|
this.make_perf_and_supine(data, typeinfo);
|
|
357
|
+
|
|
358
|
+
if (typeinfo.pres_stem.match(/nōsc/) && !this.options.suppressArchaic) {
|
|
359
|
+
const sub = (str: string, x: number, y: number) => {
|
|
360
|
+
return str.substring(x - 1, str.length + y + 1);
|
|
361
|
+
};
|
|
362
|
+
this.add_form(data, "2s_perf_actv_indc", "", sub(typeinfo.perf_stem[0], 1, -2) + "stī", 2);
|
|
363
|
+
this.add_form(data, "1p_perf_actv_indc", "", sub(typeinfo.perf_stem[0], 1, -2) + "mus", 2);
|
|
364
|
+
this.add_form(data, "2p_perf_actv_indc", "", sub(typeinfo.perf_stem[0], 1, -2) + "stis", 2);
|
|
365
|
+
this.add_form(data, "3p_perf_actv_indc", "", sub(typeinfo.perf_stem[0], 1, -2) + "runt", 3);
|
|
366
|
+
this.add_form(data, "1s_plup_actv_indc", "", sub(typeinfo.perf_stem[0], 1, -2) + "ram", 2);
|
|
367
|
+
this.add_form(data, "2s_plup_actv_indc", "", sub(typeinfo.perf_stem[0], 1, -2) + "rās", 2);
|
|
368
|
+
this.add_form(data, "3s_plup_actv_indc", "", sub(typeinfo.perf_stem[0], 1, -2) + "rat", 2);
|
|
369
|
+
this.add_form(data, "1p_plup_actv_indc", "", sub(typeinfo.perf_stem[0], 1, -2) + "rāmus", 2);
|
|
370
|
+
this.add_form(data, "2p_plup_actv_indc", "", sub(typeinfo.perf_stem[0], 1, -2) + "rātis", 2);
|
|
371
|
+
this.add_form(data, "3p_plup_actv_indc", "", sub(typeinfo.perf_stem[0], 1, -2) + "rant", 2);
|
|
372
|
+
this.add_form(data, "1s_futp_actv_indc", "", sub(typeinfo.perf_stem[0], 1, -2) + "rō", 2);
|
|
373
|
+
this.add_form(data, "2s_futp_actv_indc", "", sub(typeinfo.perf_stem[0], 1, -2) + "ris", 2);
|
|
374
|
+
this.add_form(data, "3s_futp_actv_indc", "", sub(typeinfo.perf_stem[0], 1, -2) + "rit", 2);
|
|
375
|
+
this.add_form(data, "1p_futp_actv_indc", "", sub(typeinfo.perf_stem[0], 1, -2) + "rimus", 2);
|
|
376
|
+
this.add_form(data, "2p_futp_actv_indc", "", sub(typeinfo.perf_stem[0], 1, -2) + "ritis", 2);
|
|
377
|
+
this.add_form(data, "3p_futp_actv_indc", "", sub(typeinfo.perf_stem[0], 1, -2) + "rint", 2);
|
|
378
|
+
this.add_form(data, "1s_perf_actv_subj", "", sub(typeinfo.perf_stem[0], 1, -2) + "rim", 2);
|
|
379
|
+
this.add_form(data, "2s_perf_actv_subj", "", sub(typeinfo.perf_stem[0], 1, -2) + "rīs", 2);
|
|
380
|
+
this.add_form(data, "3s_perf_actv_subj", "", sub(typeinfo.perf_stem[0], 1, -2) + "rit", 2);
|
|
381
|
+
this.add_form(data, "1p_perf_actv_subj", "", sub(typeinfo.perf_stem[0], 1, -2) + "rīmus", 2);
|
|
382
|
+
this.add_form(data, "2p_perf_actv_subj", "", sub(typeinfo.perf_stem[0], 1, -2) + "rītis", 2);
|
|
383
|
+
this.add_form(data, "3p_perf_actv_subj", "", sub(typeinfo.perf_stem[0], 1, -2) + "rint", 2);
|
|
384
|
+
this.add_form(data, "1s_plup_actv_subj", "", sub(typeinfo.perf_stem[0], 1, -2) + "ssem", 2);
|
|
385
|
+
this.add_form(data, "2s_plup_actv_subj", "", sub(typeinfo.perf_stem[0], 1, -2) + "ssēs", 2);
|
|
386
|
+
this.add_form(data, "3s_plup_actv_subj", "", sub(typeinfo.perf_stem[0], 1, -2) + "sset", 2);
|
|
387
|
+
this.add_form(data, "1p_plup_actv_subj", "", sub(typeinfo.perf_stem[0], 1, -2) + "ssēmus", 2);
|
|
388
|
+
this.add_form(data, "2p_plup_actv_subj", "", sub(typeinfo.perf_stem[0], 1, -2) + "ssētis", 2);
|
|
389
|
+
this.add_form(data, "3p_plup_actv_subj", "", sub(typeinfo.perf_stem[0], 1, -2) + "ssent", 2);
|
|
390
|
+
this.add_form(data, "perf_actv_inf", "", sub(typeinfo.perf_stem[0], 1, -2) + "sse", 2);
|
|
391
|
+
|
|
392
|
+
const note = "The verb \"nōscō\" and its compounds frequently drop the syllables \"vi\" and \"ve\" from their perfect, pluperfect and future perfect conjugations.";
|
|
393
|
+
data.footnotes.set("2s_perf_actv_indc", [note]);
|
|
394
|
+
data.footnotes.set("1p_perf_actv_indc", [note]);
|
|
395
|
+
data.footnotes.set("2p_perf_actv_indc", [note]);
|
|
396
|
+
data.footnotes.set("3p_perf_actv_indc", [note]);
|
|
397
|
+
data.footnotes.set("1s_plup_actv_indc", [note]);
|
|
398
|
+
data.footnotes.set("2s_plup_actv_indc", [note]);
|
|
399
|
+
data.footnotes.set("3s_plup_actv_indc", [note]);
|
|
400
|
+
data.footnotes.set("1p_plup_actv_indc", [note]);
|
|
401
|
+
data.footnotes.set("2p_plup_actv_indc", [note]);
|
|
402
|
+
data.footnotes.set("3p_plup_actv_indc", [note]);
|
|
403
|
+
data.footnotes.set("1s_futp_actv_indc", [note]);
|
|
404
|
+
data.footnotes.set("2s_futp_actv_indc", [note]);
|
|
405
|
+
data.footnotes.set("3s_futp_actv_indc", [note]);
|
|
406
|
+
data.footnotes.set("1p_futp_actv_indc", [note]);
|
|
407
|
+
data.footnotes.set("2p_futp_actv_indc", [note]);
|
|
408
|
+
data.footnotes.set("3p_futp_actv_indc", [note]);
|
|
409
|
+
data.footnotes.set("1s_perf_actv_subj", [note]);
|
|
410
|
+
data.footnotes.set("2s_perf_actv_subj", [note]);
|
|
411
|
+
data.footnotes.set("3s_perf_actv_subj", [note]);
|
|
412
|
+
data.footnotes.set("1p_perf_actv_subj", [note]);
|
|
413
|
+
data.footnotes.set("2p_perf_actv_subj", [note]);
|
|
414
|
+
data.footnotes.set("3p_perf_actv_subj", [note]);
|
|
415
|
+
data.footnotes.set("1s_plup_actv_subj", [note]);
|
|
416
|
+
data.footnotes.set("2s_plup_actv_subj", [note]);
|
|
417
|
+
data.footnotes.set("3s_plup_actv_subj", [note]);
|
|
418
|
+
data.footnotes.set("1p_plup_actv_subj", [note]);
|
|
419
|
+
data.footnotes.set("2p_plup_actv_subj", [note]);
|
|
420
|
+
data.footnotes.set("3p_plup_actv_subj", [note]);
|
|
421
|
+
data.footnotes.set("perf_actv_inf", [note]);
|
|
422
|
+
}
|
|
352
423
|
});
|
|
353
424
|
|
|
354
425
|
this.conjugations.set("3rd-io", (args: ArgMap, data: ConjugationData, typeinfo: ConjugationInfo) => {
|
|
@@ -389,7 +460,6 @@ export class LaVerb {
|
|
|
389
460
|
this.make_perf_and_supine(data, typeinfo);
|
|
390
461
|
|
|
391
462
|
if (!this.options.suppressPoet) {
|
|
392
|
-
// guard added by @fpw
|
|
393
463
|
if (this.form_contains(getVerbForm(data.forms, "1s_pres_actv_indc"), "serviō") || this.form_contains(getVerbForm(data.forms, "1s_pres_actv_indc"), "saeviō")) {
|
|
394
464
|
this.add_forms(data, "impf_actv_indc", typeinfo.pres_stem,
|
|
395
465
|
["iēbam", "ībam"],
|
|
@@ -605,6 +675,10 @@ export class LaVerb {
|
|
|
605
675
|
}
|
|
606
676
|
}
|
|
607
677
|
|
|
678
|
+
if (orig_lemma.startsWith("-")) {
|
|
679
|
+
addVerbType(subtypes, "suffix");
|
|
680
|
+
}
|
|
681
|
+
|
|
608
682
|
let conjtype: ConjType;
|
|
609
683
|
let base = "";
|
|
610
684
|
let auto_perf = "";
|
|
@@ -617,11 +691,20 @@ export class LaVerb {
|
|
|
617
691
|
["ō", []],
|
|
618
692
|
["or", ["depon"]],
|
|
619
693
|
["at", ["impers"]],
|
|
620
|
-
["ātur", ["depon", "impers"]]
|
|
694
|
+
["ātur", ["depon", "impers"]],
|
|
695
|
+
["ī", ["perfaspres"]]
|
|
621
696
|
]));
|
|
622
697
|
if (auto_perf_supine) {
|
|
623
|
-
|
|
624
|
-
|
|
698
|
+
if (hasVerbType(subtypes, "perfaspres")) {
|
|
699
|
+
auto_perf = base;
|
|
700
|
+
} else {
|
|
701
|
+
auto_perf = base + "āv";
|
|
702
|
+
auto_supine = base + "āt";
|
|
703
|
+
}
|
|
704
|
+
if (hasVerbType(subtypes, "suffix")) {
|
|
705
|
+
addVerbType(subtypes, "p3inf");
|
|
706
|
+
addVerbType(subtypes, "sigmpasv");
|
|
707
|
+
}
|
|
625
708
|
}
|
|
626
709
|
} else if (conj_arg == "2") {
|
|
627
710
|
conjtype = "2nd";
|
|
@@ -629,11 +712,19 @@ export class LaVerb {
|
|
|
629
712
|
["eō", []],
|
|
630
713
|
["eor", ["depon"]],
|
|
631
714
|
["et", ["impers"]],
|
|
632
|
-
["ētur", ["depon", "impers"]]
|
|
715
|
+
["ētur", ["depon", "impers"]],
|
|
716
|
+
["ī", ["perfaspres"]]
|
|
633
717
|
]));
|
|
634
718
|
if (auto_perf_supine) {
|
|
635
|
-
|
|
636
|
-
|
|
719
|
+
if (hasVerbType(subtypes, "perfaspres")) {
|
|
720
|
+
auto_perf = base;
|
|
721
|
+
} else {
|
|
722
|
+
auto_perf = base + "u";
|
|
723
|
+
auto_supine = base + "it";
|
|
724
|
+
}
|
|
725
|
+
}
|
|
726
|
+
if (hasVerbType(subtypes, "suffix")) {
|
|
727
|
+
addVerbType(subtypes, "sigmpasv");
|
|
637
728
|
}
|
|
638
729
|
} else if (conj_arg == "3") {
|
|
639
730
|
[base, detected_subtypes] = this.get_subtype_by_ending(lemma, "", subtypes, new Map([
|
|
@@ -647,7 +738,8 @@ export class LaVerb {
|
|
|
647
738
|
["ō", []],
|
|
648
739
|
["or", ["depon"]],
|
|
649
740
|
["it", ["impers"]],
|
|
650
|
-
["itur", ["depon", "impers"]]
|
|
741
|
+
["itur", ["depon", "impers"]],
|
|
742
|
+
["ī", ["perfaspres"]],
|
|
651
743
|
]));
|
|
652
744
|
if (hasVerbType(subtypes, "I")) {
|
|
653
745
|
conjtype = "3rd-io";
|
|
@@ -655,26 +747,36 @@ export class LaVerb {
|
|
|
655
747
|
conjtype = "3rd";
|
|
656
748
|
}
|
|
657
749
|
}
|
|
750
|
+
if (hasVerbType(subtypes, "perfaspres")) {
|
|
751
|
+
auto_perf = base;
|
|
752
|
+
}
|
|
753
|
+
if (hasVerbType(subtypes, "suffix")) {
|
|
754
|
+
auto_perf = "-";
|
|
755
|
+
auto_supine = "-";
|
|
756
|
+
addVerbType(subtypes, "sigmpasv");
|
|
757
|
+
}
|
|
658
758
|
} else if (conj_arg == "4") {
|
|
659
759
|
conjtype = "4th";
|
|
660
760
|
[base, detected_subtypes] = this.get_subtype_by_ending(lemma, "4", subtypes, new Map([
|
|
661
761
|
["iō", []],
|
|
662
762
|
["ior", ["depon"]],
|
|
663
763
|
["it", ["impers"]],
|
|
664
|
-
["ītur", ["depon", "impers"]]
|
|
764
|
+
["ītur", ["depon", "impers"]],
|
|
765
|
+
["ī", ["perfaspres"]]
|
|
665
766
|
]));
|
|
666
767
|
|
|
667
|
-
if (
|
|
668
|
-
|
|
669
|
-
}
|
|
670
|
-
|
|
671
|
-
if (auto_perf_supine == "++") {
|
|
768
|
+
if (hasVerbType(subtypes, "perfaspres")) {
|
|
769
|
+
auto_perf = base;
|
|
770
|
+
} else if (auto_perf_supine == "++") {
|
|
672
771
|
auto_perf = base + "īv/" + base + "i";
|
|
673
772
|
auto_supine = base + "īt";
|
|
674
773
|
} else if (auto_perf_supine == "+") {
|
|
675
774
|
auto_perf = base + "īv";
|
|
676
775
|
auto_supine = base + "īt";
|
|
677
776
|
}
|
|
777
|
+
if (hasVerbType(subtypes, "suffix")) {
|
|
778
|
+
addVerbType(subtypes, "sigm");
|
|
779
|
+
}
|
|
678
780
|
} else if (conj_arg == "irreg") {
|
|
679
781
|
let prefix: string;
|
|
680
782
|
conjtype = "irreg";
|
|
@@ -725,27 +827,29 @@ export class LaVerb {
|
|
|
725
827
|
args.set("1", base);
|
|
726
828
|
let perf_stem = "";
|
|
727
829
|
let supine_stem = "";
|
|
728
|
-
if (hasVerbType(subtypes, "depon") || hasVerbType(subtypes, "semidepon")) {
|
|
830
|
+
if (hasVerbType(subtypes, "depon") || hasVerbType(subtypes, "semidepon") || hasVerbType(subtypes, "perfaspres")) {
|
|
729
831
|
supine_stem = args.get("3") || auto_supine;
|
|
730
|
-
if (supine_stem == "-") {
|
|
832
|
+
if (supine_stem == "-" && !hasVerbType(subtypes, "suffix")) {
|
|
731
833
|
supine_stem = "";
|
|
732
834
|
}
|
|
733
835
|
if (!supine_stem) {
|
|
734
|
-
|
|
836
|
+
if (hasVerbType(subtypes, "depon") || hasVerbType(subtypes, "semidepon")) {
|
|
837
|
+
addVerbType(subtypes, "noperf");
|
|
838
|
+
}
|
|
735
839
|
addVerbType(subtypes, "nosup");
|
|
736
840
|
}
|
|
737
841
|
args.set("2", supine_stem);
|
|
738
842
|
args.delete("3");
|
|
739
843
|
} else {
|
|
740
844
|
perf_stem = args.get("3") || auto_perf;
|
|
741
|
-
if (perf_stem == "-") {
|
|
845
|
+
if (perf_stem == "-" && !hasVerbType(subtypes, "suffix")) {
|
|
742
846
|
perf_stem = "";
|
|
743
847
|
}
|
|
744
848
|
if (!perf_stem) {
|
|
745
849
|
addVerbType(subtypes, "noperf");
|
|
746
850
|
}
|
|
747
851
|
supine_stem = args.get("4") || auto_supine;
|
|
748
|
-
if (supine_stem == "-") {
|
|
852
|
+
if (supine_stem == "-" && !hasVerbType(subtypes, "suffix")) {
|
|
749
853
|
supine_stem = "";
|
|
750
854
|
}
|
|
751
855
|
if (!supine_stem) {
|
|
@@ -766,7 +870,7 @@ export class LaVerb {
|
|
|
766
870
|
|
|
767
871
|
for (const subtype of subtypes) {
|
|
768
872
|
if (!this.allowed_subtypes.has(subtype)) {
|
|
769
|
-
if (!(conjtype == "3rd" && subtype == "-I") && !(conjtype == "3rd-io" && subtype == "I")) {
|
|
873
|
+
if (!(conjtype == "3rd" && subtype == "-I") && !(conjtype == "3rd-io" && subtype == "I") && !(subtype == "suffix")) {
|
|
770
874
|
throw Error(`Unrecognized verb subtype: ${subtype}`);
|
|
771
875
|
}
|
|
772
876
|
}
|
|
@@ -818,18 +922,21 @@ export class LaVerb {
|
|
|
818
922
|
pres_stem = this.ine(args.get("1"));
|
|
819
923
|
supine_stem = this.ine(args.get("2"));
|
|
820
924
|
perf_stem = this.ine(args.get("3")); // added by @fpw for reverti
|
|
925
|
+
} else if (hasVerbType(typeinfo.subtypes, "perfaspres")) {
|
|
926
|
+
perf_stem = this.ine(args.get("1"));
|
|
927
|
+
supine_stem = this.ine(args.get("2"));
|
|
821
928
|
} else {
|
|
822
929
|
pres_stem = this.ine(args.get("1"));
|
|
823
930
|
perf_stem = this.ine(args.get("2"));
|
|
824
931
|
supine_stem = this.ine(args.get("3"));
|
|
825
932
|
}
|
|
826
933
|
|
|
827
|
-
if (hasVerbType(typeinfo.subtypes, "perfaspres") && !pres_stem) {
|
|
828
|
-
pres_stem = "whatever";
|
|
829
|
-
}
|
|
830
|
-
|
|
831
934
|
if (!pres_stem) {
|
|
832
|
-
|
|
935
|
+
if (hasVerbType(typeinfo.subtypes, "perfaspres")) {
|
|
936
|
+
pres_stem = "-";
|
|
937
|
+
} else {
|
|
938
|
+
throw Error("No present stem");
|
|
939
|
+
}
|
|
833
940
|
}
|
|
834
941
|
|
|
835
942
|
typeinfo.pres_stem = pres_stem;
|
|
@@ -1294,7 +1401,7 @@ export class LaVerb {
|
|
|
1294
1401
|
endingMap.set("acc", endings.acc);
|
|
1295
1402
|
endingMap.set("abl", endings.abl);
|
|
1296
1403
|
|
|
1297
|
-
if (base.match(/[uv]end$/)) {
|
|
1404
|
+
if (base.match(/[uv]end$/) || hasVerbType(typeinfo.subtypes, "nound")) {
|
|
1298
1405
|
und_variant = false;
|
|
1299
1406
|
}
|
|
1300
1407
|
|
|
@@ -1440,6 +1547,7 @@ export class LaVerb {
|
|
|
1440
1547
|
if (hasVerbType(typeinfo.subtypes, "perfaspres")) {
|
|
1441
1548
|
this.insert_if_not(data.categories, "Latin defective verbs");
|
|
1442
1549
|
this.insert_if_not(data.categories, "Latin active-only verbs");
|
|
1550
|
+
this.insert_if_not(data.categories, "Latin verbs with missing present stem");
|
|
1443
1551
|
this.insert_if_not(data.categories, "Latin verbs with perfect forms having imperfective meanings");
|
|
1444
1552
|
|
|
1445
1553
|
setVerbForm(data.forms, "perf_actv_ptc", getVerbForm(data.forms, "perf_pasv_ptc") || []);
|
|
@@ -1625,14 +1733,41 @@ export class LaVerb {
|
|
|
1625
1733
|
newvals.push(fv.replace(/^(.*).$/, "$1" + "ier"));
|
|
1626
1734
|
}
|
|
1627
1735
|
setVerbForm(data.forms, form, newvals);
|
|
1628
|
-
data.footnotes.set(form, ["The present passive infinitive in -ier is a rare poetic form which is attested
|
|
1736
|
+
data.footnotes.set(form, ["The present passive infinitive in -ier is a rare poetic form which is attested."]);
|
|
1629
1737
|
}
|
|
1630
1738
|
|
|
1631
1739
|
if (hasVerbType(typeinfo.subtypes, "poetsyncperf") && !this.options.suppressPoet) {
|
|
1632
1740
|
const sss: [string, string][] = [
|
|
1741
|
+
// infinitive
|
|
1633
1742
|
["perf_actv_inf", "sse"],
|
|
1743
|
+
// perfect actives
|
|
1634
1744
|
["2s_perf_actv_indc", "stī"],
|
|
1745
|
+
["3s_perf_actv_indc", "t"],
|
|
1746
|
+
["1p_perf_actv_indc", "mus"],
|
|
1635
1747
|
["2p_perf_actv_indc", "stis"],
|
|
1748
|
+
["3p_perf_actv_indc", "runt"],
|
|
1749
|
+
// pluperfect actives
|
|
1750
|
+
["1s_plup_actv_indc", "ram"],
|
|
1751
|
+
["2s_plup_actv_indc", "rās"],
|
|
1752
|
+
["3s_plup_actv_indc", "rat"],
|
|
1753
|
+
["1p_plup_actv_indc", "rāmus"],
|
|
1754
|
+
["2p_plup_actv_indc", "rātis"],
|
|
1755
|
+
["3p_plup_actv_indc", "rant"],
|
|
1756
|
+
// future perfect actives
|
|
1757
|
+
["1s_futp_actv_indc", "rō"],
|
|
1758
|
+
["2s_futp_actv_indc", "ris"],
|
|
1759
|
+
["3s_futp_actv_indc", "rit"],
|
|
1760
|
+
["1p_futp_actv_indc", "rimus"],
|
|
1761
|
+
["2p_futp_actv_indc", "ritis"],
|
|
1762
|
+
["3p_futp_actv_indc", "rint"],
|
|
1763
|
+
// perfect subjunctives
|
|
1764
|
+
["1s_perf_actv_subj", "rim"],
|
|
1765
|
+
["2s_perf_actv_subj", "rīs"],
|
|
1766
|
+
["3s_perf_actv_subj", "rit"],
|
|
1767
|
+
["1p_perf_actv_subj", "rīmus"],
|
|
1768
|
+
["2p_perf_actv_subj", "rītis"],
|
|
1769
|
+
["3p_perf_actv_subj", "rint"],
|
|
1770
|
+
// pluperfect subjunctive
|
|
1636
1771
|
["1s_plup_actv_subj", "ssem"],
|
|
1637
1772
|
["2s_plup_actv_subj", "ssēs"],
|
|
1638
1773
|
["3s_plup_actv_subj", "sset"],
|
|
@@ -1644,10 +1779,12 @@ export class LaVerb {
|
|
|
1644
1779
|
const add_sync_perf = (form: string, suff_sync: string) => {
|
|
1645
1780
|
const formval = getVerbForm(data.forms, form) || [];
|
|
1646
1781
|
for (const fv of formval) {
|
|
1647
|
-
const regex1 = new RegExp(`
|
|
1648
|
-
const regex2 = new RegExp(`
|
|
1649
|
-
|
|
1650
|
-
|
|
1782
|
+
const regex1 = new RegExp(`v[ieē]${suff_sync}$`);
|
|
1783
|
+
const regex2 = new RegExp(`vē${suff_sync}$`);
|
|
1784
|
+
const regex3 = new RegExp(`[aeiouyāēīōūȳăĕĭŏŭ]u[ieē]${suff_sync}$`);
|
|
1785
|
+
const regex4 = new RegExp(`[aeiouyāēīōūȳăĕĭŏŭ]uē${suff_sync}$`);
|
|
1786
|
+
if (fv.match(regex1) || fv.match(regex2) || fv.match(regex3) || fv.match(regex4)) {
|
|
1787
|
+
const rep = fv.substring(0, fv.length - suff_sync.length - 2) + suff_sync;
|
|
1651
1788
|
this.insert_if_not(formval, rep);
|
|
1652
1789
|
}
|
|
1653
1790
|
}
|
|
@@ -1692,13 +1829,13 @@ export class LaVerb {
|
|
|
1692
1829
|
}
|
|
1693
1830
|
|
|
1694
1831
|
private make_perfect_passive(data: ConjugationData) {
|
|
1695
|
-
|
|
1832
|
+
let ppp: string[] | undefined = getVerbForm(data.forms, "perf_pasv_ptc") || [];
|
|
1696
1833
|
const ppplinks: string[] = [];
|
|
1697
1834
|
for (const pppform of ppp) {
|
|
1698
1835
|
ppplinks.push(`[[${pppform}]]`);
|
|
1699
1836
|
}
|
|
1700
1837
|
|
|
1701
|
-
|
|
1838
|
+
let ppplink = ppplinks.join(" or ");
|
|
1702
1839
|
const sumlink = "[[sum]]";
|
|
1703
1840
|
|
|
1704
1841
|
const text_for_slot = new Map<string, string>([
|
|
@@ -1729,6 +1866,15 @@ export class LaVerb {
|
|
|
1729
1866
|
(passiveSuffix || "");
|
|
1730
1867
|
setVerbForm(data.forms, slot, [entry]);
|
|
1731
1868
|
}
|
|
1869
|
+
|
|
1870
|
+
ppp = getVerbForm(data.forms, "1s_pres_actv_indc");
|
|
1871
|
+
if (ppp && ppp[0] == "faciō") {
|
|
1872
|
+
ppplink = "[[factum]]";
|
|
1873
|
+
for (const [slot, text] of text_for_slot) {
|
|
1874
|
+
const ts = getVerbForm(data.forms, slot) ?? [];
|
|
1875
|
+
setVerbForm(data.forms, slot, [ts[0] + " or " + ppplink + " + " + text + " of " + sumlink]);
|
|
1876
|
+
}
|
|
1877
|
+
}
|
|
1732
1878
|
}
|
|
1733
1879
|
|
|
1734
1880
|
private override(data: ConjugationData, args: ArgMap) {
|
|
@@ -1807,6 +1953,14 @@ export class LaVerb {
|
|
|
1807
1953
|
}
|
|
1808
1954
|
}
|
|
1809
1955
|
|
|
1956
|
+
private notes_override(data: ConjugationData, args: ArgMap) {
|
|
1957
|
+
if (args.get("notes") == "-") {
|
|
1958
|
+
for (const key of data.footnotes.keys()) {
|
|
1959
|
+
data.footnotes.set(key, [""]);
|
|
1960
|
+
}
|
|
1961
|
+
}
|
|
1962
|
+
}
|
|
1963
|
+
|
|
1810
1964
|
private set_linked_forms(data: ConjugationData, typeinfo: ConjugationInfo) {
|
|
1811
1965
|
for (const slot of LaVerb.potential_lemma_slots) {
|
|
1812
1966
|
const linked_forms: string[] = [];
|
|
@@ -1941,6 +2095,17 @@ export class LaVerb {
|
|
|
1941
2095
|
this.make_supine(data, typeinfo, [prefix + "dict"]);
|
|
1942
2096
|
|
|
1943
2097
|
this.add_form(data, "2s_pres_actv_impr", prefix, "dīc", 1);
|
|
2098
|
+
|
|
2099
|
+
if (!this.options.suppressArchaic) {
|
|
2100
|
+
this.add_form(data, "2s_pres_actv_impr", prefix, "dīc", 1);
|
|
2101
|
+
data.footnotes.set("2s_pres_actv_impr", ["Archaic."]);
|
|
2102
|
+
if (prefix == "") {
|
|
2103
|
+
this.add_form(data, "1s_futr_actv_indc", prefix, "dīcēbō", 2);
|
|
2104
|
+
this.add_form(data, "3s_futr_actv_indc", prefix, "dīcēbit", 2);
|
|
2105
|
+
data.footnotes.set("1s_futr_actv_indc", ["Archaic."]);
|
|
2106
|
+
data.footnotes.set("3s_futr_actv_indc", ["Archaic."]);
|
|
2107
|
+
}
|
|
2108
|
+
}
|
|
1944
2109
|
});
|
|
1945
2110
|
|
|
1946
2111
|
this.irreg_conjugations.set("do", (args: ArgMap, data: ConjugationData, typeinfo: ConjugationInfo) => {
|
|
@@ -2126,7 +2291,7 @@ export class LaVerb {
|
|
|
2126
2291
|
|
|
2127
2292
|
this.make_pres_3rd(data, typeinfo, prefix_pres + "fer");
|
|
2128
2293
|
if (!prefix_perf) {
|
|
2129
|
-
if (this.options.
|
|
2294
|
+
if (this.options.suppressArchaic) {
|
|
2130
2295
|
// added by @fpw
|
|
2131
2296
|
this.make_perf(data, ["tul"]);
|
|
2132
2297
|
} else {
|
|
@@ -2347,6 +2512,7 @@ export class LaVerb {
|
|
|
2347
2512
|
|
|
2348
2513
|
this.irreg_conjugations.set("coepi", (args: ArgMap, data: ConjugationData, typeinfo: ConjugationInfo) => {
|
|
2349
2514
|
data.categories.push("Latin third conjugation verbs");
|
|
2515
|
+
data.categories.push("Latin verbs with missing present stem");
|
|
2350
2516
|
data.categories.push("Latin defective verbs");
|
|
2351
2517
|
|
|
2352
2518
|
const prefix = typeinfo.prefix;
|
|
@@ -2399,6 +2565,11 @@ export class LaVerb {
|
|
|
2399
2565
|
setVerbForm(data.forms, "2p_pres_actv_subj", [prefix_s + "sītis"]);
|
|
2400
2566
|
setVerbForm(data.forms, "3p_pres_actv_subj", [prefix_s + "sint"]);
|
|
2401
2567
|
|
|
2568
|
+
if (prefix_s == "ad" && !this.options.suppressArchaic) {
|
|
2569
|
+
this.add_form(data, "3p_pres_actv_subj", "", "adessint", 2);
|
|
2570
|
+
data.footnotes.set("3p_pres_actv_subj", ["Archaic."]);
|
|
2571
|
+
}
|
|
2572
|
+
|
|
2402
2573
|
setVerbForm(data.forms, "1s_impf_actv_subj", [prefix_e + "essem", prefix_f + "forem"]);
|
|
2403
2574
|
setVerbForm(data.forms, "2s_impf_actv_subj", [prefix_e + "essēs", prefix_f + "forēs"]);
|
|
2404
2575
|
setVerbForm(data.forms, "3s_impf_actv_subj", [prefix_e + "esset", prefix_f + "foret"]);
|
|
@@ -30,10 +30,14 @@ export enum VerbType {
|
|
|
30
30
|
NeuterPlural = "np",
|
|
31
31
|
HighlyDefective = "highlydef",
|
|
32
32
|
SigM = "sigm",
|
|
33
|
+
SigMPassive = "sigmpasv",
|
|
34
|
+
NoUND = "nound",
|
|
35
|
+
Suffix = "suffix",
|
|
33
36
|
|
|
34
37
|
NoIStem = "-I",
|
|
35
38
|
NoDeponent = "-depon",
|
|
36
39
|
NoImpersonal = "-impers",
|
|
40
|
+
NoPerfAsPres = "-perfaspres",
|
|
37
41
|
}
|
|
38
42
|
|
|
39
43
|
export function addVerbType(types: Set<VerbType>, verbType: string) {
|