@fpw/en-wiktionary-la-modules 0.0.16 → 0.1.3
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/LaEngine.d.ts +7 -8
- package/dist/LaEngine.js +1 -1
- package/dist/LaEngine.js.map +1 -1
- package/dist/modules/conjugation/LaVerb.d.ts +5 -3
- package/dist/modules/conjugation/LaVerb.js +207 -31
- 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 +6 -3
- package/dist/modules/declination/LaNominal.js +190 -168
- 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.d.ts +7 -29
- package/dist/modules/declination/LaPersonalPronoun.js +73 -56
- 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/HeadWord.d.ts +3 -3
- package/dist/modules/headword/HeadwordParser.d.ts +2 -2
- package/dist/modules/headword/HeadwordParser.js.map +1 -1
- package/package.json +8 -9
- package/src/LaEngine.ts +8 -9
- package/src/modules/conjugation/LaVerb.ts +213 -36
- package/src/modules/conjugation/VerbType.ts +4 -0
- package/src/modules/declination/LaAdjData.ts +47 -24
- package/src/modules/declination/LaNominal.ts +216 -184
- package/src/modules/declination/LaNounData.ts +67 -66
- package/src/modules/declination/LaPersonalPronoun.ts +76 -63
- package/src/modules/declination/NominalType.ts +153 -0
- package/src/modules/headword/HeadWord.ts +3 -3
- package/src/modules/headword/HeadwordParser.ts +18 -18
|
@@ -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.
|
|
@@ -43,9 +43,12 @@ export interface ConjOptions {
|
|
|
43
43
|
|
|
44
44
|
// use short i in perfect infinitive of īre (iisse vs īsse)
|
|
45
45
|
ireWithShortPerfInf?: boolean;
|
|
46
|
+
|
|
47
|
+
// make ēsse the infinitive of edō instead of edere
|
|
48
|
+
reorderEdere?: boolean;
|
|
46
49
|
}
|
|
47
50
|
|
|
48
|
-
export interface
|
|
51
|
+
export interface VerbData {
|
|
49
52
|
templateType: "conjugation";
|
|
50
53
|
|
|
51
54
|
info: ConjugationInfo;
|
|
@@ -132,6 +135,7 @@ export class LaVerb {
|
|
|
132
135
|
"np",
|
|
133
136
|
"highlydef",
|
|
134
137
|
"sigm",
|
|
138
|
+
"sigmpasv",
|
|
135
139
|
]);
|
|
136
140
|
|
|
137
141
|
private static potential_lemma_slots = [
|
|
@@ -151,7 +155,7 @@ export class LaVerb {
|
|
|
151
155
|
this.setup_conjs();
|
|
152
156
|
}
|
|
153
157
|
|
|
154
|
-
public make_data(args: ArgMap):
|
|
158
|
+
public make_data(args: ArgMap): VerbData {
|
|
155
159
|
for (const slot of this.iter_slots(true, false)) {
|
|
156
160
|
if (!args.has(slot)) {
|
|
157
161
|
args.set(slot, "");
|
|
@@ -261,6 +265,7 @@ export class LaVerb {
|
|
|
261
265
|
this.override(data, args);
|
|
262
266
|
this.set_linked_forms(data, typeinfo);
|
|
263
267
|
this.add_prefix_suffix(data);
|
|
268
|
+
this.notes_override(data, args);
|
|
264
269
|
|
|
265
270
|
return {
|
|
266
271
|
templateType: "conjugation",
|
|
@@ -346,6 +351,72 @@ export class LaVerb {
|
|
|
346
351
|
}
|
|
347
352
|
this.make_pres_3rd(data, typeinfo, typeinfo.pres_stem);
|
|
348
353
|
this.make_perf_and_supine(data, typeinfo);
|
|
354
|
+
|
|
355
|
+
if (typeinfo.pres_stem.match(/nōsc/)) {
|
|
356
|
+
const sub = (str: string, x: number, y: number) => {
|
|
357
|
+
return str.substring(x - 1, str.length + y + 1);
|
|
358
|
+
};
|
|
359
|
+
this.add_form(data, "2s_perf_actv_indc", "", sub(typeinfo.perf_stem[0], 1, -2) + "stī", 2);
|
|
360
|
+
this.add_form(data, "1p_perf_actv_indc", "", sub(typeinfo.perf_stem[0], 1, -2) + "mus", 2);
|
|
361
|
+
this.add_form(data, "2p_perf_actv_indc", "", sub(typeinfo.perf_stem[0], 1, -2) + "stis", 2);
|
|
362
|
+
this.add_form(data, "3p_perf_actv_indc", "", sub(typeinfo.perf_stem[0], 1, -2) + "runt", 3);
|
|
363
|
+
this.add_form(data, "1s_plup_actv_indc", "", sub(typeinfo.perf_stem[0], 1, -2) + "ram", 2);
|
|
364
|
+
this.add_form(data, "2s_plup_actv_indc", "", sub(typeinfo.perf_stem[0], 1, -2) + "rās", 2);
|
|
365
|
+
this.add_form(data, "3s_plup_actv_indc", "", sub(typeinfo.perf_stem[0], 1, -2) + "rat", 2);
|
|
366
|
+
this.add_form(data, "1p_plup_actv_indc", "", sub(typeinfo.perf_stem[0], 1, -2) + "rāmus", 2);
|
|
367
|
+
this.add_form(data, "2p_plup_actv_indc", "", sub(typeinfo.perf_stem[0], 1, -2) + "rātis", 2);
|
|
368
|
+
this.add_form(data, "3p_plup_actv_indc", "", sub(typeinfo.perf_stem[0], 1, -2) + "rant", 2);
|
|
369
|
+
this.add_form(data, "1s_futp_actv_indc", "", sub(typeinfo.perf_stem[0], 1, -2) + "rō", 2);
|
|
370
|
+
this.add_form(data, "2s_futp_actv_indc", "", sub(typeinfo.perf_stem[0], 1, -2) + "ris", 2);
|
|
371
|
+
this.add_form(data, "3s_futp_actv_indc", "", sub(typeinfo.perf_stem[0], 1, -2) + "rit", 2);
|
|
372
|
+
this.add_form(data, "1p_futp_actv_indc", "", sub(typeinfo.perf_stem[0], 1, -2) + "rimus", 2);
|
|
373
|
+
this.add_form(data, "2p_futp_actv_indc", "", sub(typeinfo.perf_stem[0], 1, -2) + "ritis", 2);
|
|
374
|
+
this.add_form(data, "3p_futp_actv_indc", "", sub(typeinfo.perf_stem[0], 1, -2) + "rint", 2);
|
|
375
|
+
this.add_form(data, "1s_perf_actv_subj", "", sub(typeinfo.perf_stem[0], 1, -2) + "rim", 2);
|
|
376
|
+
this.add_form(data, "2s_perf_actv_subj", "", sub(typeinfo.perf_stem[0], 1, -2) + "rīs", 2);
|
|
377
|
+
this.add_form(data, "3s_perf_actv_subj", "", sub(typeinfo.perf_stem[0], 1, -2) + "rit", 2);
|
|
378
|
+
this.add_form(data, "1p_perf_actv_subj", "", sub(typeinfo.perf_stem[0], 1, -2) + "rīmus", 2);
|
|
379
|
+
this.add_form(data, "2p_perf_actv_subj", "", sub(typeinfo.perf_stem[0], 1, -2) + "rītis", 2);
|
|
380
|
+
this.add_form(data, "3p_perf_actv_subj", "", sub(typeinfo.perf_stem[0], 1, -2) + "rint", 2);
|
|
381
|
+
this.add_form(data, "1s_plup_actv_subj", "", sub(typeinfo.perf_stem[0], 1, -2) + "ssem", 2);
|
|
382
|
+
this.add_form(data, "2s_plup_actv_subj", "", sub(typeinfo.perf_stem[0], 1, -2) + "ssēs", 2);
|
|
383
|
+
this.add_form(data, "3s_plup_actv_subj", "", sub(typeinfo.perf_stem[0], 1, -2) + "sset", 2);
|
|
384
|
+
this.add_form(data, "1p_plup_actv_subj", "", sub(typeinfo.perf_stem[0], 1, -2) + "ssēmus", 2);
|
|
385
|
+
this.add_form(data, "2p_plup_actv_subj", "", sub(typeinfo.perf_stem[0], 1, -2) + "ssētis", 2);
|
|
386
|
+
this.add_form(data, "3p_plup_actv_subj", "", sub(typeinfo.perf_stem[0], 1, -2) + "ssent", 2);
|
|
387
|
+
this.add_form(data, "perf_actv_inf", "", sub(typeinfo.perf_stem[0], 1, -2) + "sse", 2);
|
|
388
|
+
|
|
389
|
+
const note = "The verb \"nōscō\" and its compounds frequently drop the syllables \"vi\" and \"ve\" from their perfect, pluperfect and future perfect conjugations.";
|
|
390
|
+
data.footnotes.set("2s_perf_actv_indc", [note]);
|
|
391
|
+
data.footnotes.set("1p_perf_actv_indc", [note]);
|
|
392
|
+
data.footnotes.set("2p_perf_actv_indc", [note]);
|
|
393
|
+
data.footnotes.set("3p_perf_actv_indc", [note]);
|
|
394
|
+
data.footnotes.set("1s_plup_actv_indc", [note]);
|
|
395
|
+
data.footnotes.set("2s_plup_actv_indc", [note]);
|
|
396
|
+
data.footnotes.set("3s_plup_actv_indc", [note]);
|
|
397
|
+
data.footnotes.set("1p_plup_actv_indc", [note]);
|
|
398
|
+
data.footnotes.set("2p_plup_actv_indc", [note]);
|
|
399
|
+
data.footnotes.set("3p_plup_actv_indc", [note]);
|
|
400
|
+
data.footnotes.set("1s_futp_actv_indc", [note]);
|
|
401
|
+
data.footnotes.set("2s_futp_actv_indc", [note]);
|
|
402
|
+
data.footnotes.set("3s_futp_actv_indc", [note]);
|
|
403
|
+
data.footnotes.set("1p_futp_actv_indc", [note]);
|
|
404
|
+
data.footnotes.set("2p_futp_actv_indc", [note]);
|
|
405
|
+
data.footnotes.set("3p_futp_actv_indc", [note]);
|
|
406
|
+
data.footnotes.set("1s_perf_actv_subj", [note]);
|
|
407
|
+
data.footnotes.set("2s_perf_actv_subj", [note]);
|
|
408
|
+
data.footnotes.set("3s_perf_actv_subj", [note]);
|
|
409
|
+
data.footnotes.set("1p_perf_actv_subj", [note]);
|
|
410
|
+
data.footnotes.set("2p_perf_actv_subj", [note]);
|
|
411
|
+
data.footnotes.set("3p_perf_actv_subj", [note]);
|
|
412
|
+
data.footnotes.set("1s_plup_actv_subj", [note]);
|
|
413
|
+
data.footnotes.set("2s_plup_actv_subj", [note]);
|
|
414
|
+
data.footnotes.set("3s_plup_actv_subj", [note]);
|
|
415
|
+
data.footnotes.set("1p_plup_actv_subj", [note]);
|
|
416
|
+
data.footnotes.set("2p_plup_actv_subj", [note]);
|
|
417
|
+
data.footnotes.set("3p_plup_actv_subj", [note]);
|
|
418
|
+
data.footnotes.set("perf_actv_inf", [note]);
|
|
419
|
+
}
|
|
349
420
|
});
|
|
350
421
|
|
|
351
422
|
this.conjugations.set("3rd-io", (args: ArgMap, data: ConjugationData, typeinfo: ConjugationInfo) => {
|
|
@@ -602,6 +673,10 @@ export class LaVerb {
|
|
|
602
673
|
}
|
|
603
674
|
}
|
|
604
675
|
|
|
676
|
+
if (orig_lemma.startsWith("-")) {
|
|
677
|
+
addVerbType(subtypes, "suffix");
|
|
678
|
+
}
|
|
679
|
+
|
|
605
680
|
let conjtype: ConjType;
|
|
606
681
|
let base = "";
|
|
607
682
|
let auto_perf = "";
|
|
@@ -614,11 +689,20 @@ export class LaVerb {
|
|
|
614
689
|
["ō", []],
|
|
615
690
|
["or", ["depon"]],
|
|
616
691
|
["at", ["impers"]],
|
|
617
|
-
["ātur", ["depon", "impers"]]
|
|
692
|
+
["ātur", ["depon", "impers"]],
|
|
693
|
+
["ī", ["perfaspres"]]
|
|
618
694
|
]));
|
|
619
695
|
if (auto_perf_supine) {
|
|
620
|
-
|
|
621
|
-
|
|
696
|
+
if (hasVerbType(subtypes, "perfaspres")) {
|
|
697
|
+
auto_perf = base;
|
|
698
|
+
} else {
|
|
699
|
+
auto_perf = base + "āv";
|
|
700
|
+
auto_supine = base + "āt";
|
|
701
|
+
}
|
|
702
|
+
if (hasVerbType(subtypes, "suffix")) {
|
|
703
|
+
addVerbType(subtypes, "p3inf");
|
|
704
|
+
addVerbType(subtypes, "sigmpasv");
|
|
705
|
+
}
|
|
622
706
|
}
|
|
623
707
|
} else if (conj_arg == "2") {
|
|
624
708
|
conjtype = "2nd";
|
|
@@ -626,11 +710,19 @@ export class LaVerb {
|
|
|
626
710
|
["eō", []],
|
|
627
711
|
["eor", ["depon"]],
|
|
628
712
|
["et", ["impers"]],
|
|
629
|
-
["ētur", ["depon", "impers"]]
|
|
713
|
+
["ētur", ["depon", "impers"]],
|
|
714
|
+
["ī", ["perfaspres"]]
|
|
630
715
|
]));
|
|
631
716
|
if (auto_perf_supine) {
|
|
632
|
-
|
|
633
|
-
|
|
717
|
+
if (hasVerbType(subtypes, "perfaspres")) {
|
|
718
|
+
auto_perf = base;
|
|
719
|
+
} else {
|
|
720
|
+
auto_perf = base + "u";
|
|
721
|
+
auto_supine = base + "it";
|
|
722
|
+
}
|
|
723
|
+
}
|
|
724
|
+
if (hasVerbType(subtypes, "suffix")) {
|
|
725
|
+
addVerbType(subtypes, "sigmpasv");
|
|
634
726
|
}
|
|
635
727
|
} else if (conj_arg == "3") {
|
|
636
728
|
[base, detected_subtypes] = this.get_subtype_by_ending(lemma, "", subtypes, new Map([
|
|
@@ -644,7 +736,8 @@ export class LaVerb {
|
|
|
644
736
|
["ō", []],
|
|
645
737
|
["or", ["depon"]],
|
|
646
738
|
["it", ["impers"]],
|
|
647
|
-
["itur", ["depon", "impers"]]
|
|
739
|
+
["itur", ["depon", "impers"]],
|
|
740
|
+
["ī", ["perfaspres"]],
|
|
648
741
|
]));
|
|
649
742
|
if (hasVerbType(subtypes, "I")) {
|
|
650
743
|
conjtype = "3rd-io";
|
|
@@ -652,26 +745,36 @@ export class LaVerb {
|
|
|
652
745
|
conjtype = "3rd";
|
|
653
746
|
}
|
|
654
747
|
}
|
|
748
|
+
if (hasVerbType(subtypes, "perfaspres")) {
|
|
749
|
+
auto_perf = base;
|
|
750
|
+
}
|
|
751
|
+
if (hasVerbType(subtypes, "suffix")) {
|
|
752
|
+
auto_perf = "-";
|
|
753
|
+
auto_supine = "-";
|
|
754
|
+
addVerbType(subtypes, "sigmpasv");
|
|
755
|
+
}
|
|
655
756
|
} else if (conj_arg == "4") {
|
|
656
757
|
conjtype = "4th";
|
|
657
758
|
[base, detected_subtypes] = this.get_subtype_by_ending(lemma, "4", subtypes, new Map([
|
|
658
759
|
["iō", []],
|
|
659
760
|
["ior", ["depon"]],
|
|
660
761
|
["it", ["impers"]],
|
|
661
|
-
["ītur", ["depon", "impers"]]
|
|
762
|
+
["ītur", ["depon", "impers"]],
|
|
763
|
+
["ī", ["perfaspres"]]
|
|
662
764
|
]));
|
|
663
765
|
|
|
664
|
-
if (
|
|
665
|
-
|
|
666
|
-
}
|
|
667
|
-
|
|
668
|
-
if (auto_perf_supine == "++") {
|
|
766
|
+
if (hasVerbType(subtypes, "perfaspres")) {
|
|
767
|
+
auto_perf = base;
|
|
768
|
+
} else if (auto_perf_supine == "++") {
|
|
669
769
|
auto_perf = base + "īv/" + base + "i";
|
|
670
770
|
auto_supine = base + "īt";
|
|
671
771
|
} else if (auto_perf_supine == "+") {
|
|
672
772
|
auto_perf = base + "īv";
|
|
673
773
|
auto_supine = base + "īt";
|
|
674
774
|
}
|
|
775
|
+
if (hasVerbType(subtypes, "suffix")) {
|
|
776
|
+
addVerbType(subtypes, "sigm");
|
|
777
|
+
}
|
|
675
778
|
} else if (conj_arg == "irreg") {
|
|
676
779
|
let prefix: string;
|
|
677
780
|
conjtype = "irreg";
|
|
@@ -722,27 +825,29 @@ export class LaVerb {
|
|
|
722
825
|
args.set("1", base);
|
|
723
826
|
let perf_stem = "";
|
|
724
827
|
let supine_stem = "";
|
|
725
|
-
if (hasVerbType(subtypes, "depon") || hasVerbType(subtypes, "semidepon")) {
|
|
828
|
+
if (hasVerbType(subtypes, "depon") || hasVerbType(subtypes, "semidepon") || hasVerbType(subtypes, "perfaspres")) {
|
|
726
829
|
supine_stem = args.get("3") || auto_supine;
|
|
727
|
-
if (supine_stem == "-") {
|
|
830
|
+
if (supine_stem == "-" && !hasVerbType(subtypes, "suffix")) {
|
|
728
831
|
supine_stem = "";
|
|
729
832
|
}
|
|
730
833
|
if (!supine_stem) {
|
|
731
|
-
|
|
834
|
+
if (hasVerbType(subtypes, "depon") || hasVerbType(subtypes, "semidepon")) {
|
|
835
|
+
addVerbType(subtypes, "noperf");
|
|
836
|
+
}
|
|
732
837
|
addVerbType(subtypes, "nosup");
|
|
733
838
|
}
|
|
734
839
|
args.set("2", supine_stem);
|
|
735
840
|
args.delete("3");
|
|
736
841
|
} else {
|
|
737
842
|
perf_stem = args.get("3") || auto_perf;
|
|
738
|
-
if (perf_stem == "-") {
|
|
843
|
+
if (perf_stem == "-" && !hasVerbType(subtypes, "suffix")) {
|
|
739
844
|
perf_stem = "";
|
|
740
845
|
}
|
|
741
846
|
if (!perf_stem) {
|
|
742
847
|
addVerbType(subtypes, "noperf");
|
|
743
848
|
}
|
|
744
849
|
supine_stem = args.get("4") || auto_supine;
|
|
745
|
-
if (supine_stem == "-") {
|
|
850
|
+
if (supine_stem == "-" && !hasVerbType(subtypes, "suffix")) {
|
|
746
851
|
supine_stem = "";
|
|
747
852
|
}
|
|
748
853
|
if (!supine_stem) {
|
|
@@ -763,7 +868,7 @@ export class LaVerb {
|
|
|
763
868
|
|
|
764
869
|
for (const subtype of subtypes) {
|
|
765
870
|
if (!this.allowed_subtypes.has(subtype)) {
|
|
766
|
-
if (!(conjtype == "3rd" && subtype == "-I") && !(conjtype == "3rd-io" && subtype == "I")) {
|
|
871
|
+
if (!(conjtype == "3rd" && subtype == "-I") && !(conjtype == "3rd-io" && subtype == "I") && !(subtype == "suffix")) {
|
|
767
872
|
throw Error(`Unrecognized verb subtype: ${subtype}`);
|
|
768
873
|
}
|
|
769
874
|
}
|
|
@@ -815,18 +920,21 @@ export class LaVerb {
|
|
|
815
920
|
pres_stem = this.ine(args.get("1"));
|
|
816
921
|
supine_stem = this.ine(args.get("2"));
|
|
817
922
|
perf_stem = this.ine(args.get("3")); // added by @fpw for reverti
|
|
923
|
+
} else if (hasVerbType(typeinfo.subtypes, "perfaspres")) {
|
|
924
|
+
perf_stem = this.ine(args.get("1"));
|
|
925
|
+
supine_stem = this.ine(args.get("2"));
|
|
818
926
|
} else {
|
|
819
927
|
pres_stem = this.ine(args.get("1"));
|
|
820
928
|
perf_stem = this.ine(args.get("2"));
|
|
821
929
|
supine_stem = this.ine(args.get("3"));
|
|
822
930
|
}
|
|
823
931
|
|
|
824
|
-
if (hasVerbType(typeinfo.subtypes, "perfaspres") && !pres_stem) {
|
|
825
|
-
pres_stem = "whatever";
|
|
826
|
-
}
|
|
827
|
-
|
|
828
932
|
if (!pres_stem) {
|
|
829
|
-
|
|
933
|
+
if (hasVerbType(typeinfo.subtypes, "perfaspres")) {
|
|
934
|
+
pres_stem = "-";
|
|
935
|
+
} else {
|
|
936
|
+
throw Error("No present stem");
|
|
937
|
+
}
|
|
830
938
|
}
|
|
831
939
|
|
|
832
940
|
typeinfo.pres_stem = pres_stem;
|
|
@@ -1291,7 +1399,7 @@ export class LaVerb {
|
|
|
1291
1399
|
endingMap.set("acc", endings.acc);
|
|
1292
1400
|
endingMap.set("abl", endings.abl);
|
|
1293
1401
|
|
|
1294
|
-
if (base.match(/[uv]end$/)) {
|
|
1402
|
+
if (base.match(/[uv]end$/) || hasVerbType(typeinfo.subtypes, "nound")) {
|
|
1295
1403
|
und_variant = false;
|
|
1296
1404
|
}
|
|
1297
1405
|
|
|
@@ -1437,6 +1545,7 @@ export class LaVerb {
|
|
|
1437
1545
|
if (hasVerbType(typeinfo.subtypes, "perfaspres")) {
|
|
1438
1546
|
this.insert_if_not(data.categories, "Latin defective verbs");
|
|
1439
1547
|
this.insert_if_not(data.categories, "Latin active-only verbs");
|
|
1548
|
+
this.insert_if_not(data.categories, "Latin verbs with missing present stem");
|
|
1440
1549
|
this.insert_if_not(data.categories, "Latin verbs with perfect forms having imperfective meanings");
|
|
1441
1550
|
|
|
1442
1551
|
setVerbForm(data.forms, "perf_actv_ptc", getVerbForm(data.forms, "perf_pasv_ptc") || []);
|
|
@@ -1622,14 +1731,41 @@ export class LaVerb {
|
|
|
1622
1731
|
newvals.push(fv.replace(/^(.*).$/, "$1" + "ier"));
|
|
1623
1732
|
}
|
|
1624
1733
|
setVerbForm(data.forms, form, newvals);
|
|
1625
|
-
data.footnotes.set(form, ["The present passive infinitive in -ier is a rare poetic form which is attested
|
|
1734
|
+
data.footnotes.set(form, ["The present passive infinitive in -ier is a rare poetic form which is attested."]);
|
|
1626
1735
|
}
|
|
1627
1736
|
|
|
1628
1737
|
if (hasVerbType(typeinfo.subtypes, "poetsyncperf") && !this.options.suppressPoet) {
|
|
1629
1738
|
const sss: [string, string][] = [
|
|
1739
|
+
// infinitive
|
|
1630
1740
|
["perf_actv_inf", "sse"],
|
|
1741
|
+
// perfect actives
|
|
1631
1742
|
["2s_perf_actv_indc", "stī"],
|
|
1743
|
+
["3s_perf_actv_indc", "t"],
|
|
1744
|
+
["1p_perf_actv_indc", "mus"],
|
|
1632
1745
|
["2p_perf_actv_indc", "stis"],
|
|
1746
|
+
["3p_perf_actv_indc", "runt"],
|
|
1747
|
+
// pluperfect actives
|
|
1748
|
+
["1s_plup_actv_indc", "ram"],
|
|
1749
|
+
["2s_plup_actv_indc", "rās"],
|
|
1750
|
+
["3s_plup_actv_indc", "rat"],
|
|
1751
|
+
["1p_plup_actv_indc", "rāmus"],
|
|
1752
|
+
["2p_plup_actv_indc", "rātis"],
|
|
1753
|
+
["3p_plup_actv_indc", "rant"],
|
|
1754
|
+
// future perfect actives
|
|
1755
|
+
["1s_futp_actv_indc", "rō"],
|
|
1756
|
+
["2s_futp_actv_indc", "ris"],
|
|
1757
|
+
["3s_futp_actv_indc", "rit"],
|
|
1758
|
+
["1p_futp_actv_indc", "rimus"],
|
|
1759
|
+
["2p_futp_actv_indc", "ritis"],
|
|
1760
|
+
["3p_futp_actv_indc", "rint"],
|
|
1761
|
+
// perfect subjunctives
|
|
1762
|
+
["1s_perf_actv_subj", "rim"],
|
|
1763
|
+
["2s_perf_actv_subj", "rīs"],
|
|
1764
|
+
["3s_perf_actv_subj", "rit"],
|
|
1765
|
+
["1p_perf_actv_subj", "rīmus"],
|
|
1766
|
+
["2p_perf_actv_subj", "rītis"],
|
|
1767
|
+
["3p_perf_actv_subj", "rint"],
|
|
1768
|
+
// pluperfect subjunctive
|
|
1633
1769
|
["1s_plup_actv_subj", "ssem"],
|
|
1634
1770
|
["2s_plup_actv_subj", "ssēs"],
|
|
1635
1771
|
["3s_plup_actv_subj", "sset"],
|
|
@@ -1641,10 +1777,12 @@ export class LaVerb {
|
|
|
1641
1777
|
const add_sync_perf = (form: string, suff_sync: string) => {
|
|
1642
1778
|
const formval = getVerbForm(data.forms, form) || [];
|
|
1643
1779
|
for (const fv of formval) {
|
|
1644
|
-
const regex1 = new RegExp(`
|
|
1645
|
-
const regex2 = new RegExp(`
|
|
1646
|
-
|
|
1647
|
-
|
|
1780
|
+
const regex1 = new RegExp(`v[ieē]${suff_sync}$`);
|
|
1781
|
+
const regex2 = new RegExp(`vē${suff_sync}$`);
|
|
1782
|
+
const regex3 = new RegExp(`[aeiouyāēīōūȳăĕĭŏŭ]u[ieē]${suff_sync}$`);
|
|
1783
|
+
const regex4 = new RegExp(`[aeiouyāēīōūȳăĕĭŏŭ]uē${suff_sync}$`);
|
|
1784
|
+
if (fv.match(regex1) || fv.match(regex2) || fv.match(regex3) || fv.match(regex4)) {
|
|
1785
|
+
const rep = fv.substring(0, fv.length - suff_sync.length - 2) + suff_sync;
|
|
1648
1786
|
this.insert_if_not(formval, rep);
|
|
1649
1787
|
}
|
|
1650
1788
|
}
|
|
@@ -1689,13 +1827,13 @@ export class LaVerb {
|
|
|
1689
1827
|
}
|
|
1690
1828
|
|
|
1691
1829
|
private make_perfect_passive(data: ConjugationData) {
|
|
1692
|
-
|
|
1830
|
+
let ppp: string[] | undefined = getVerbForm(data.forms, "perf_pasv_ptc") || [];
|
|
1693
1831
|
const ppplinks: string[] = [];
|
|
1694
1832
|
for (const pppform of ppp) {
|
|
1695
1833
|
ppplinks.push(`[[${pppform}]]`);
|
|
1696
1834
|
}
|
|
1697
1835
|
|
|
1698
|
-
|
|
1836
|
+
let ppplink = ppplinks.join(" or ");
|
|
1699
1837
|
const sumlink = "[[sum]]";
|
|
1700
1838
|
|
|
1701
1839
|
const text_for_slot = new Map<string, string>([
|
|
@@ -1726,6 +1864,15 @@ export class LaVerb {
|
|
|
1726
1864
|
(passiveSuffix || "");
|
|
1727
1865
|
setVerbForm(data.forms, slot, [entry]);
|
|
1728
1866
|
}
|
|
1867
|
+
|
|
1868
|
+
ppp = getVerbForm(data.forms, "1s_pres_actv_indc");
|
|
1869
|
+
if (ppp && ppp[0] == "faciō") {
|
|
1870
|
+
ppplink = "[[factum]]";
|
|
1871
|
+
for (const [slot, text] of text_for_slot) {
|
|
1872
|
+
const ts = getVerbForm(data.forms, slot) ?? [];
|
|
1873
|
+
setVerbForm(data.forms, slot, [ts[0] + " or " + ppplink + " + " + text + " of " + sumlink]);
|
|
1874
|
+
}
|
|
1875
|
+
}
|
|
1729
1876
|
}
|
|
1730
1877
|
|
|
1731
1878
|
private override(data: ConjugationData, args: ArgMap) {
|
|
@@ -1804,6 +1951,14 @@ export class LaVerb {
|
|
|
1804
1951
|
}
|
|
1805
1952
|
}
|
|
1806
1953
|
|
|
1954
|
+
private notes_override(data: ConjugationData, args: ArgMap) {
|
|
1955
|
+
if (args.get("notes") == "-") {
|
|
1956
|
+
for (const key of data.footnotes.keys()) {
|
|
1957
|
+
data.footnotes.set(key, [""]);
|
|
1958
|
+
}
|
|
1959
|
+
}
|
|
1960
|
+
}
|
|
1961
|
+
|
|
1807
1962
|
private set_linked_forms(data: ConjugationData, typeinfo: ConjugationInfo) {
|
|
1808
1963
|
for (const slot of LaVerb.potential_lemma_slots) {
|
|
1809
1964
|
const linked_forms: string[] = [];
|
|
@@ -1938,6 +2093,17 @@ export class LaVerb {
|
|
|
1938
2093
|
this.make_supine(data, typeinfo, [prefix + "dict"]);
|
|
1939
2094
|
|
|
1940
2095
|
this.add_form(data, "2s_pres_actv_impr", prefix, "dīc", 1);
|
|
2096
|
+
|
|
2097
|
+
if (!this.options.suppressPoet) {
|
|
2098
|
+
this.add_form(data, "2s_pres_actv_impr", prefix, "dīc", 1);
|
|
2099
|
+
data.footnotes.set("2s_pres_actv_impr", ["Archaic."]);
|
|
2100
|
+
if (prefix == "") {
|
|
2101
|
+
this.add_form(data, "1s_futr_actv_indc", prefix, "dīcēbō", 2);
|
|
2102
|
+
this.add_form(data, "3s_futr_actv_indc", prefix, "dīcēbit", 2);
|
|
2103
|
+
data.footnotes.set("1s_futr_actv_indc", ["Archaic."]);
|
|
2104
|
+
data.footnotes.set("3s_futr_actv_indc", ["Archaic."]);
|
|
2105
|
+
}
|
|
2106
|
+
}
|
|
1941
2107
|
});
|
|
1942
2108
|
|
|
1943
2109
|
this.irreg_conjugations.set("do", (args: ArgMap, data: ConjugationData, typeinfo: ConjugationInfo) => {
|
|
@@ -2011,7 +2177,12 @@ export class LaVerb {
|
|
|
2011
2177
|
this.add_2_forms(data, "pres_actv_impr", prefix, "ēs", "ēste");
|
|
2012
2178
|
this.add_23_forms(data, "futr_actv_impr", prefix, "ēstō", "ēstō", "ēstōte", []);
|
|
2013
2179
|
|
|
2014
|
-
this.
|
|
2180
|
+
if (this.options.reorderEdere) {
|
|
2181
|
+
// switch order to make ēsse the lemma
|
|
2182
|
+
setVerbForm(data.forms, "pres_actv_inf", [prefix + "ēsse", prefix + "edere"]);
|
|
2183
|
+
} else {
|
|
2184
|
+
this.add_form(data, "pres_actv_inf", prefix, "ēsse");
|
|
2185
|
+
}
|
|
2015
2186
|
});
|
|
2016
2187
|
|
|
2017
2188
|
this.irreg_conjugations.set("eo", (args: ArgMap, data: ConjugationData, typeinfo: ConjugationInfo) => {
|
|
@@ -2339,6 +2510,7 @@ export class LaVerb {
|
|
|
2339
2510
|
|
|
2340
2511
|
this.irreg_conjugations.set("coepi", (args: ArgMap, data: ConjugationData, typeinfo: ConjugationInfo) => {
|
|
2341
2512
|
data.categories.push("Latin third conjugation verbs");
|
|
2513
|
+
data.categories.push("Latin verbs with missing present stem");
|
|
2342
2514
|
data.categories.push("Latin defective verbs");
|
|
2343
2515
|
|
|
2344
2516
|
const prefix = typeinfo.prefix;
|
|
@@ -2391,6 +2563,11 @@ export class LaVerb {
|
|
|
2391
2563
|
setVerbForm(data.forms, "2p_pres_actv_subj", [prefix_s + "sītis"]);
|
|
2392
2564
|
setVerbForm(data.forms, "3p_pres_actv_subj", [prefix_s + "sint"]);
|
|
2393
2565
|
|
|
2566
|
+
if (prefix_s == "ad" && !this.options.suppressPoet) {
|
|
2567
|
+
this.add_form(data, "3p_pres_actv_subj", "", "adessint", 2);
|
|
2568
|
+
data.footnotes.set("3p_pres_actv_subj", ["Archaic."]);
|
|
2569
|
+
}
|
|
2570
|
+
|
|
2394
2571
|
setVerbForm(data.forms, "1s_impf_actv_subj", [prefix_e + "essem", prefix_f + "forem"]);
|
|
2395
2572
|
setVerbForm(data.forms, "2s_impf_actv_subj", [prefix_e + "essēs", prefix_f + "forēs"]);
|
|
2396
2573
|
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) {
|