@fpw/en-wiktionary-la-modules 0.2.2 → 0.3.1
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/LICENSE +75 -75
- package/README.md +19 -15
- package/dist/LaEngine.d.ts +23 -23
- package/dist/LaEngine.js +64 -66
- package/dist/index.d.ts +12 -11
- package/dist/index.js +12 -28
- package/dist/modules/common.d.ts +67 -66
- package/dist/modules/common.js +145 -157
- package/dist/modules/conjugation/LaVerb.d.ts +118 -109
- package/dist/modules/conjugation/LaVerb.js +2861 -2295
- package/dist/modules/conjugation/VerbAffix.d.ts +18 -18
- package/dist/modules/conjugation/VerbAffix.js +19 -23
- package/dist/modules/conjugation/VerbForm.d.ts +204 -182
- package/dist/modules/conjugation/VerbForm.js +215 -199
- package/dist/modules/conjugation/VerbType.d.ts +54 -40
- package/dist/modules/conjugation/VerbType.js +66 -58
- package/dist/modules/declination/LaAdjData.d.ts +16 -16
- package/dist/modules/declination/LaAdjData.js +1474 -908
- package/dist/modules/declination/LaNominal.d.ts +136 -130
- package/dist/modules/declination/LaNominal.js +1884 -1804
- package/dist/modules/declination/LaNounData.d.ts +16 -2
- package/dist/modules/declination/LaNounData.js +935 -855
- package/dist/modules/declination/LaPersonalPronoun.d.ts +12 -12
- package/dist/modules/declination/LaPersonalPronoun.js +80 -85
- package/dist/modules/declination/NominalForm.d.ts +85 -69
- package/dist/modules/declination/NominalForm.js +101 -91
- package/dist/modules/declination/NominalType.d.ts +191 -120
- package/dist/modules/declination/NominalType.js +211 -146
- package/dist/modules/headword/HeadWord.d.ts +107 -107
- package/dist/modules/headword/HeadWord.js +28 -32
- package/dist/modules/headword/HeadwordParser.d.ts +29 -29
- package/dist/modules/headword/HeadwordParser.js +456 -452
- package/package.json +23 -15
- package/dist/LaEngine.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/modules/common.js.map +0 -1
- package/dist/modules/conjugation/LaVerb.js.map +0 -1
- package/dist/modules/conjugation/VerbAffix.js.map +0 -1
- package/dist/modules/conjugation/VerbForm.js.map +0 -1
- package/dist/modules/conjugation/VerbType.js.map +0 -1
- package/dist/modules/declination/LaAdjData.js.map +0 -1
- package/dist/modules/declination/LaNominal.js.map +0 -1
- package/dist/modules/declination/LaNounData.js.map +0 -1
- package/dist/modules/declination/LaPersonalPronoun.js.map +0 -1
- package/dist/modules/declination/NominalForm.js.map +0 -1
- package/dist/modules/declination/NominalType.js.map +0 -1
- package/dist/modules/headword/HeadWord.js.map +0 -1
- package/dist/modules/headword/HeadwordParser.js.map +0 -1
- package/src/LaEngine.ts +0 -86
- package/src/index.ts +0 -16
- package/src/modules/common.ts +0 -164
- package/src/modules/conjugation/LaVerb.ts +0 -2669
- package/src/modules/conjugation/VerbAffix.ts +0 -18
- package/src/modules/conjugation/VerbForm.ts +0 -223
- package/src/modules/conjugation/VerbType.ts +0 -55
- package/src/modules/declination/LaAdjData.ts +0 -1036
- package/src/modules/declination/LaNominal.ts +0 -2025
- package/src/modules/declination/LaNounData.ts +0 -897
- package/src/modules/declination/LaPersonalPronoun.ts +0 -92
- package/src/modules/declination/NominalForm.ts +0 -89
- package/src/modules/declination/NominalType.ts +0 -157
- package/src/modules/headword/HeadWord.ts +0 -132
- package/src/modules/headword/HeadwordParser.ts +0 -515
|
@@ -1,2669 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* This is a complete re-implementation of Wiktionary's Module:la-verb, developed by Benwing2.
|
|
3
|
-
* It was converted from Lua to TypeScript by Folke Will <folko@solhost.org>.
|
|
4
|
-
*
|
|
5
|
-
* A few new options to suppress certain rate forms were added.
|
|
6
|
-
*
|
|
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=71129594
|
|
9
|
-
*
|
|
10
|
-
* Lua idioms, function and variable names kept as in the original in order to easily
|
|
11
|
-
* backport later changes to this implementation.
|
|
12
|
-
*
|
|
13
|
-
* For that reason, it's suggested to add a type-aware wrapper around this class and leave
|
|
14
|
-
* this code unchanged instead of improving the types and use of idioms in this class.
|
|
15
|
-
*
|
|
16
|
-
*/
|
|
17
|
-
import { ArgMap, extract_base, FormMap, read_list, remove_links, strip_macrons } from "../common";
|
|
18
|
-
import { VerbAffix } from "./VerbAffix";
|
|
19
|
-
import { getVerbForm, setVerbForm, VerbForm } from "./VerbForm";
|
|
20
|
-
import { addVerbType, hasVerbType, VerbType } from "./VerbType";
|
|
21
|
-
|
|
22
|
-
export type ConjType = "1st" | "2nd" | "3rd" | "3rd-io" | "4th" | "irreg";
|
|
23
|
-
|
|
24
|
-
export interface ConjOptions {
|
|
25
|
-
// suppress the -ere form in the 3rd person perfect singular,
|
|
26
|
-
// see https://www.reddit.com/r/LatinLanguage/comments/bm2dsq/difference_between_amaverunt_and_amavere/
|
|
27
|
-
suppressPerfectEre?: boolean;
|
|
28
|
-
|
|
29
|
-
// suppress -re forms in the 2nd person singular passive form,
|
|
30
|
-
// see https://latin.stackexchange.com/a/2922
|
|
31
|
-
suppressPassiveRe?: boolean;
|
|
32
|
-
|
|
33
|
-
// suppress und-variants in future participles,
|
|
34
|
-
// see https://latin.stackexchange.com/a/4900
|
|
35
|
-
suppressUndVariants?: boolean;
|
|
36
|
-
|
|
37
|
-
// suppress the additional -i perfect forms in the 4th conjugation,
|
|
38
|
-
// see https://latin.stackexchange.com/a/9351
|
|
39
|
-
suppressIPerfect?: boolean;
|
|
40
|
-
|
|
41
|
-
// suppress poetic forms that are set using options like poetsyncperf
|
|
42
|
-
suppressPoet?: boolean;
|
|
43
|
-
|
|
44
|
-
// suppress archaic forms
|
|
45
|
-
suppressArchaic?: boolean;
|
|
46
|
-
|
|
47
|
-
// use short i in perfect infinitive of īre (iisse vs īsse)
|
|
48
|
-
ireWithShortPerfInf?: boolean;
|
|
49
|
-
|
|
50
|
-
// make ēsse the infinitive of edō instead of edere
|
|
51
|
-
reorderEdere?: boolean;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
export interface VerbInflectionData {
|
|
55
|
-
templateType: "conjugation";
|
|
56
|
-
|
|
57
|
-
info: ConjugationInfo;
|
|
58
|
-
data: ConjugationData;
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
export interface ConjugationInfo {
|
|
62
|
-
lemma: string;
|
|
63
|
-
orig_lemma: string;
|
|
64
|
-
conj_type: ConjType;
|
|
65
|
-
conj_subtype?: ConjType;
|
|
66
|
-
subtypes: Set<VerbType>;
|
|
67
|
-
|
|
68
|
-
verb: string;
|
|
69
|
-
prefix: string;
|
|
70
|
-
|
|
71
|
-
pres_stem: string;
|
|
72
|
-
perf_stem: string[];
|
|
73
|
-
supine_stem: string[];
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
export interface ConjugationData {
|
|
77
|
-
forms: FormMap<VerbForm>;
|
|
78
|
-
presuf: Map<VerbAffix, string>;
|
|
79
|
-
categories: string[];
|
|
80
|
-
footnotes: FormMap<string>;
|
|
81
|
-
overriding_lemma: string[];
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
type ConjugationFunction = (args: ArgMap, data: ConjugationData, typeinfo: ConjugationInfo) => void;
|
|
85
|
-
|
|
86
|
-
export class LaVerb {
|
|
87
|
-
private non_generic_slots: string[];
|
|
88
|
-
private generic_slots: string[];
|
|
89
|
-
private irreg_verbs_to_conj_type = new Map<string, ConjType>([
|
|
90
|
-
["aiō", "3rd-io"],
|
|
91
|
-
["aiiō", "3rd-io"],
|
|
92
|
-
["ajō", "3rd-io"],
|
|
93
|
-
["dīcō", "3rd"],
|
|
94
|
-
["dūcō", "3rd"],
|
|
95
|
-
["faciō", "3rd-io"],
|
|
96
|
-
["fīō", "3rd"],
|
|
97
|
-
["ferō", "3rd"],
|
|
98
|
-
["inquam", "irreg"],
|
|
99
|
-
["libet", "2nd"],
|
|
100
|
-
["lubet", "2nd"],
|
|
101
|
-
["licet", "2nd"],
|
|
102
|
-
["volō", "irreg"],
|
|
103
|
-
["mālō", "irreg"],
|
|
104
|
-
["nōlō", "irreg"],
|
|
105
|
-
["possum", "irreg"],
|
|
106
|
-
["piget", "2nd"],
|
|
107
|
-
["coepī", "irreg"],
|
|
108
|
-
["sum", "irreg"],
|
|
109
|
-
["edō", "3rd"],
|
|
110
|
-
["dō", "1st"],
|
|
111
|
-
["eō", "irreg"],
|
|
112
|
-
]);
|
|
113
|
-
private allowed_subtypes = new Set<string>([
|
|
114
|
-
"impers",
|
|
115
|
-
"3only",
|
|
116
|
-
"depon",
|
|
117
|
-
"semidepon",
|
|
118
|
-
"optsemidepon",
|
|
119
|
-
"nopass",
|
|
120
|
-
"pass3only",
|
|
121
|
-
"passimpers",
|
|
122
|
-
"perfaspres",
|
|
123
|
-
"noperf",
|
|
124
|
-
"nopasvperf",
|
|
125
|
-
"nosup",
|
|
126
|
-
"supfutractvonly",
|
|
127
|
-
"noimp",
|
|
128
|
-
"nofut",
|
|
129
|
-
"p3inf",
|
|
130
|
-
"poetsyncperf",
|
|
131
|
-
"optsyncperf",
|
|
132
|
-
"alwayssyncperf",
|
|
133
|
-
"m",
|
|
134
|
-
"f",
|
|
135
|
-
"n",
|
|
136
|
-
"mp",
|
|
137
|
-
"fp",
|
|
138
|
-
"np",
|
|
139
|
-
"highlydef",
|
|
140
|
-
"sigm",
|
|
141
|
-
"sigmpasv",
|
|
142
|
-
]);
|
|
143
|
-
|
|
144
|
-
private static potential_lemma_slots = [
|
|
145
|
-
"1s_pres_actv_indc", // regular
|
|
146
|
-
"3s_pres_actv_indc", // impersonal
|
|
147
|
-
"1s_perf_actv_indc", // coepī
|
|
148
|
-
"3s_perf_actv_indc", // doesn't occur?
|
|
149
|
-
];
|
|
150
|
-
|
|
151
|
-
private conjugations = new Map<string, ConjugationFunction>();
|
|
152
|
-
private irreg_conjugations = new Map<string, ConjugationFunction>();
|
|
153
|
-
private options: ConjOptions;
|
|
154
|
-
|
|
155
|
-
public constructor(options?: ConjOptions) {
|
|
156
|
-
this.options = options || {};
|
|
157
|
-
[this.non_generic_slots, this.generic_slots] = this.initialize_slots();
|
|
158
|
-
this.setup_conjs();
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
public make_data(args: ArgMap): VerbInflectionData {
|
|
162
|
-
for (const slot of this.iter_slots(true, false)) {
|
|
163
|
-
if (!args.has(slot)) {
|
|
164
|
-
args.set(slot, "");
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
const [conj_type, conj_subtype, subtypes, orig_lemma, lemma] = this.detect_decl_and_subtypes(args);
|
|
169
|
-
const conj = this.conjugations.get(conj_type);
|
|
170
|
-
if (!conj) {
|
|
171
|
-
throw Error(`Unknown conjugation type ${conj_type}`);
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
const data: ConjugationData = {
|
|
175
|
-
overriding_lemma: read_list(args, "lemma"),
|
|
176
|
-
forms: new Map(),
|
|
177
|
-
presuf: new Map(),
|
|
178
|
-
categories: [],
|
|
179
|
-
footnotes: new Map(),
|
|
180
|
-
};
|
|
181
|
-
|
|
182
|
-
const typeinfo: ConjugationInfo = {
|
|
183
|
-
lemma: lemma,
|
|
184
|
-
orig_lemma: orig_lemma,
|
|
185
|
-
conj_type: conj_type,
|
|
186
|
-
conj_subtype: conj_subtype,
|
|
187
|
-
subtypes: subtypes,
|
|
188
|
-
verb: "",
|
|
189
|
-
prefix: "",
|
|
190
|
-
pres_stem: "",
|
|
191
|
-
perf_stem: [],
|
|
192
|
-
supine_stem: []
|
|
193
|
-
};
|
|
194
|
-
|
|
195
|
-
if (args.get("passive_prefix") && !args.get("prefix")) {
|
|
196
|
-
throw Error("Can't specify passiv_prefix without prefix");
|
|
197
|
-
}
|
|
198
|
-
if (args.get("plural_prefix") && !args.get("prefix")) {
|
|
199
|
-
throw Error("Can't specify plural_prefix without prefix");
|
|
200
|
-
}
|
|
201
|
-
if (args.get("plural_passive_prefix") && !args.get("prefix")) {
|
|
202
|
-
throw Error("Can't specify plural_passive_prefix without prefix");
|
|
203
|
-
}
|
|
204
|
-
if (args.get("passive_suffix") && !args.get("suffix")) {
|
|
205
|
-
throw Error("Can't specify passive_suffix without suffix");
|
|
206
|
-
}
|
|
207
|
-
if (args.get("plural_suffix") && !args.get("suffix")) {
|
|
208
|
-
throw Error("Can't specify plural_suffix without suffix");
|
|
209
|
-
}
|
|
210
|
-
if (args.get("plural_passive_suffix") && !args.get("suffix")) {
|
|
211
|
-
throw Error("Can't specify plural_passive_suffix without suffix");
|
|
212
|
-
}
|
|
213
|
-
|
|
214
|
-
const normalize_prefix = (prefix: string | undefined): string => {
|
|
215
|
-
if (!prefix) {
|
|
216
|
-
return "";
|
|
217
|
-
}
|
|
218
|
-
|
|
219
|
-
const no_space_prefix = prefix.match(/(.*)_$/);
|
|
220
|
-
if (no_space_prefix) {
|
|
221
|
-
return no_space_prefix[1];
|
|
222
|
-
} else if (prefix.match(/-$/)) {
|
|
223
|
-
return prefix;
|
|
224
|
-
} else {
|
|
225
|
-
return prefix + " ";
|
|
226
|
-
}
|
|
227
|
-
};
|
|
228
|
-
|
|
229
|
-
const normalize_suffix = (suffix: string | undefined): string => {
|
|
230
|
-
if (!suffix) {
|
|
231
|
-
return "";
|
|
232
|
-
}
|
|
233
|
-
|
|
234
|
-
const no_space_suffix = suffix.match(/_(.*)$/);
|
|
235
|
-
if (no_space_suffix) {
|
|
236
|
-
return no_space_suffix[1];
|
|
237
|
-
} else if (suffix.match(/^-/)) {
|
|
238
|
-
return suffix;
|
|
239
|
-
} else {
|
|
240
|
-
return " " + suffix;
|
|
241
|
-
}
|
|
242
|
-
};
|
|
243
|
-
|
|
244
|
-
data.presuf.set(VerbAffix.Prefix, normalize_prefix(args.get("prefix")));
|
|
245
|
-
data.presuf.set(VerbAffix.PassivePrefix, normalize_prefix(args.get("passive_prefix")) || data.presuf.get(VerbAffix.Prefix) || "");
|
|
246
|
-
data.presuf.set(VerbAffix.PluralPrefix, normalize_prefix(args.get("plural_prefix")) || data.presuf.get(VerbAffix.Prefix) || "");
|
|
247
|
-
|
|
248
|
-
data.presuf.set(VerbAffix.PluralPassivePrefix, normalize_prefix(args.get("plural_passive_prefix")) || normalize_prefix(args.get("passive_prefix")) || data.presuf.get(VerbAffix.PluralPrefix) || "");
|
|
249
|
-
data.presuf.set(VerbAffix.GenitivePrefix, normalize_prefix(args.get("gen_prefix")));
|
|
250
|
-
data.presuf.set(VerbAffix.DativePrefix, normalize_prefix(args.get("dat_prefix")));
|
|
251
|
-
data.presuf.set(VerbAffix.AccusativePrefix, normalize_prefix(args.get("acc_prefix")));
|
|
252
|
-
data.presuf.set(VerbAffix.AblativePrefix, normalize_prefix(args.get("abl_prefix")));
|
|
253
|
-
|
|
254
|
-
data.presuf.set(VerbAffix.Suffix, normalize_suffix(args.get("suffix")));
|
|
255
|
-
data.presuf.set(VerbAffix.PassiveSuffix, normalize_suffix(args.get("passive_suffix")) || data.presuf.get(VerbAffix.Suffix) || "");
|
|
256
|
-
data.presuf.set(VerbAffix.PluralSuffix, normalize_suffix(args.get("plural_suffix")) || data.presuf.get(VerbAffix.Suffix) || "");
|
|
257
|
-
data.presuf.set(VerbAffix.PluralPassiveSuffix, normalize_suffix(args.get("plural_passive_suffix")) || normalize_suffix(args.get("passive_suffix")) || data.presuf.get(VerbAffix.PluralSuffix) || "");
|
|
258
|
-
|
|
259
|
-
data.presuf.set(VerbAffix.GenitiveSuffix, normalize_suffix(args.get("gen_suffix")));
|
|
260
|
-
data.presuf.set(VerbAffix.DativeSuffix, normalize_suffix(args.get("dat_suffix")));
|
|
261
|
-
data.presuf.set(VerbAffix.AccusativeSuffive, normalize_suffix(args.get("acc_suffix")));
|
|
262
|
-
data.presuf.set(VerbAffix.AblativeSuffix, normalize_suffix(args.get("abl_suffix")));
|
|
263
|
-
|
|
264
|
-
conj(args, data, typeinfo);
|
|
265
|
-
|
|
266
|
-
this.suppress(data);
|
|
267
|
-
this.postprocess(data, typeinfo);
|
|
268
|
-
this.override(data, args);
|
|
269
|
-
this.set_linked_forms(data, typeinfo);
|
|
270
|
-
this.add_prefix_suffix(data);
|
|
271
|
-
this.notes_override(data, args);
|
|
272
|
-
|
|
273
|
-
return {
|
|
274
|
-
templateType: "conjugation",
|
|
275
|
-
|
|
276
|
-
info: typeinfo,
|
|
277
|
-
data: data
|
|
278
|
-
};
|
|
279
|
-
}
|
|
280
|
-
|
|
281
|
-
public static get_valid_forms(raw_forms: string[] | undefined): string[] {
|
|
282
|
-
const valid_forms: string[] = [];
|
|
283
|
-
|
|
284
|
-
if (raw_forms) {
|
|
285
|
-
for (const subform of raw_forms) {
|
|
286
|
-
if (!LaVerb.form_is_empty([subform])) {
|
|
287
|
-
valid_forms.push(subform);
|
|
288
|
-
}
|
|
289
|
-
}
|
|
290
|
-
}
|
|
291
|
-
|
|
292
|
-
return valid_forms;
|
|
293
|
-
}
|
|
294
|
-
|
|
295
|
-
public static get_lemma_forms(data: ConjugationData, do_linked: boolean): string[] {
|
|
296
|
-
const linked_prefix = (do_linked ? "linked_" : "");
|
|
297
|
-
for (const slot of LaVerb.potential_lemma_slots) {
|
|
298
|
-
const lemma_forms = LaVerb.get_valid_forms(getVerbForm(data.forms, linked_prefix + slot));
|
|
299
|
-
if (lemma_forms.length > 0) {
|
|
300
|
-
return lemma_forms;
|
|
301
|
-
}
|
|
302
|
-
}
|
|
303
|
-
return [];
|
|
304
|
-
}
|
|
305
|
-
|
|
306
|
-
private setup_conjs() {
|
|
307
|
-
this.conjugations.set("1st", (args: ArgMap, data: ConjugationData, typeinfo: ConjugationInfo) => {
|
|
308
|
-
this.get_regular_stems(args, typeinfo);
|
|
309
|
-
data.categories.push("Latin first conjugation verbs");
|
|
310
|
-
for (const perf_stem of typeinfo.perf_stem) {
|
|
311
|
-
if (perf_stem == typeinfo.pres_stem + "āv") {
|
|
312
|
-
data.categories.push("Latin first conjugation verbs with perfect in -av-");
|
|
313
|
-
} else if (perf_stem == typeinfo.pres_stem + "u") {
|
|
314
|
-
data.categories.push("Latin first conjugation verbs with perfect in -u-");
|
|
315
|
-
} else if (perf_stem == typeinfo.pres_stem) {
|
|
316
|
-
data.categories.push("Latin first conjugation verbs with suffixless perfect");
|
|
317
|
-
} else {
|
|
318
|
-
data.categories.push("Latin first conjugation verbs with irregular perfect");
|
|
319
|
-
}
|
|
320
|
-
}
|
|
321
|
-
this.make_pres_1st(data, typeinfo, typeinfo.pres_stem);
|
|
322
|
-
this.make_perf_and_supine(data, typeinfo);
|
|
323
|
-
});
|
|
324
|
-
|
|
325
|
-
this.conjugations.set("2nd", (args: ArgMap, data: ConjugationData, typeinfo: ConjugationInfo) => {
|
|
326
|
-
this.get_regular_stems(args, typeinfo);
|
|
327
|
-
data.categories.push("Latin second conjugation verbs");
|
|
328
|
-
for (let perf_stem of typeinfo.perf_stem) {
|
|
329
|
-
let pres_stem = typeinfo.pres_stem;
|
|
330
|
-
pres_stem = pres_stem.replace(/qu/g, "1");
|
|
331
|
-
perf_stem = perf_stem.replace(/qu/g, "1");
|
|
332
|
-
if (perf_stem == pres_stem + "ēv") {
|
|
333
|
-
data.categories.push("Latin second conjugation verbs with perfect in -ev-");
|
|
334
|
-
} else if (perf_stem == pres_stem + "u") {
|
|
335
|
-
data.categories.push("Latin second conjugation verbs with perfect in -u-");
|
|
336
|
-
} else if (perf_stem == pres_stem) {
|
|
337
|
-
data.categories.push("Latin second conjugation verbs with suffixless perfect");
|
|
338
|
-
} else if (this.has_perf_in_s_or_x(pres_stem, perf_stem)) {
|
|
339
|
-
data.categories.push("Latin second conjugation verbs with perfect in -s- or -x-");
|
|
340
|
-
} else {
|
|
341
|
-
data.categories.push("Latin second conjugation verbs with irregular perfect");
|
|
342
|
-
}
|
|
343
|
-
}
|
|
344
|
-
this.make_pres_2nd(data, typeinfo, typeinfo.pres_stem);
|
|
345
|
-
this.make_perf_and_supine(data, typeinfo);
|
|
346
|
-
});
|
|
347
|
-
|
|
348
|
-
this.conjugations.set("3rd", (args: ArgMap, data: ConjugationData, typeinfo: ConjugationInfo) => {
|
|
349
|
-
this.get_regular_stems(args, typeinfo);
|
|
350
|
-
this.set_3rd_conj_categories(data, typeinfo);
|
|
351
|
-
|
|
352
|
-
if (typeinfo.pres_stem.match(/[āēīōū]sc$/)) {
|
|
353
|
-
data.categories.push("Latin inchoative verbs");
|
|
354
|
-
}
|
|
355
|
-
this.make_pres_3rd(data, typeinfo, typeinfo.pres_stem);
|
|
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
|
-
}
|
|
423
|
-
});
|
|
424
|
-
|
|
425
|
-
this.conjugations.set("3rd-io", (args: ArgMap, data: ConjugationData, typeinfo: ConjugationInfo) => {
|
|
426
|
-
this.get_regular_stems(args, typeinfo);
|
|
427
|
-
this.set_3rd_conj_categories(data, typeinfo);
|
|
428
|
-
|
|
429
|
-
if (typeinfo.pres_stem.match(/[āēīōū]sc$/)) {
|
|
430
|
-
data.categories.push("Latin inchoative verbs");
|
|
431
|
-
}
|
|
432
|
-
this.make_pres_3rd_io(data, typeinfo, typeinfo.pres_stem);
|
|
433
|
-
this.make_perf_and_supine(data, typeinfo);
|
|
434
|
-
});
|
|
435
|
-
|
|
436
|
-
this.conjugations.set("4th", (args: ArgMap, data: ConjugationData, typeinfo: ConjugationInfo) => {
|
|
437
|
-
this.get_regular_stems(args, typeinfo);
|
|
438
|
-
data.categories.push("Latin fourth conjugation verbs");
|
|
439
|
-
|
|
440
|
-
for (let perf_stem of typeinfo.perf_stem) {
|
|
441
|
-
let pres_stem = typeinfo.pres_stem;
|
|
442
|
-
pres_stem = pres_stem.replace(/qu/g, "1");
|
|
443
|
-
perf_stem = perf_stem.replace(/qu/g, "1");
|
|
444
|
-
if (perf_stem == pres_stem + "īv") {
|
|
445
|
-
data.categories.push("Latin fourth conjugation verbs with perfect in -iv-");
|
|
446
|
-
} else if (perf_stem == pres_stem + "i") {
|
|
447
|
-
data.categories.push("Latin fourth conjugation verbs with perfect in -i-");
|
|
448
|
-
} else if (perf_stem == pres_stem + "u") {
|
|
449
|
-
data.categories.push("Latin fourth conjugation verbs with perfect in -u-");
|
|
450
|
-
} else if (perf_stem == pres_stem) {
|
|
451
|
-
data.categories.push("Latin fourth conjugation verbs with suffixless perfect");
|
|
452
|
-
} else if (this.has_perf_in_s_or_x(pres_stem, perf_stem)) {
|
|
453
|
-
data.categories.push("Latin fourth conjugation verbs with perfect in -s- or -x-");
|
|
454
|
-
} else {
|
|
455
|
-
data.categories.push("Latin fourth conjugation verbs with irregular perfect");
|
|
456
|
-
}
|
|
457
|
-
}
|
|
458
|
-
|
|
459
|
-
this.make_pres_4th(data, typeinfo, typeinfo.pres_stem);
|
|
460
|
-
this.make_perf_and_supine(data, typeinfo);
|
|
461
|
-
|
|
462
|
-
if (!this.options.suppressPoet) {
|
|
463
|
-
if (this.form_contains(getVerbForm(data.forms, "1s_pres_actv_indc"), "serviō") || this.form_contains(getVerbForm(data.forms, "1s_pres_actv_indc"), "saeviō")) {
|
|
464
|
-
this.add_forms(data, "impf_actv_indc", typeinfo.pres_stem,
|
|
465
|
-
["iēbam", "ībam"],
|
|
466
|
-
["iēbās", "ībās"],
|
|
467
|
-
["iēbat", "ībat"],
|
|
468
|
-
["iēbāmus", "ībāmus"],
|
|
469
|
-
["iēbātis", "ībātis"],
|
|
470
|
-
["iēbant", "ībant"]
|
|
471
|
-
);
|
|
472
|
-
|
|
473
|
-
this.add_forms(data, "futr_actv_indc", typeinfo.pres_stem,
|
|
474
|
-
["iam", "ībō"],
|
|
475
|
-
["iēs", "ībis"],
|
|
476
|
-
["iet", "ībit"],
|
|
477
|
-
["iēmus", "ībimus"],
|
|
478
|
-
["iētis", "ībitis"],
|
|
479
|
-
["ient", "ībunt"]
|
|
480
|
-
);
|
|
481
|
-
}
|
|
482
|
-
}
|
|
483
|
-
|
|
484
|
-
if (hasVerbType(typeinfo.subtypes, "alwayssyncperf") || hasVerbType(typeinfo.subtypes, "optsyncperf")) {
|
|
485
|
-
data.forms.forEach((forms: string[], key: VerbForm) => {
|
|
486
|
-
if (key.match(/perf/) || key.match(/plup/) || key.match(/futp/)) {
|
|
487
|
-
setVerbForm(data.forms, key, []);
|
|
488
|
-
for (const f of forms) {
|
|
489
|
-
if (hasVerbType(typeinfo.subtypes, "optsyncperf")) {
|
|
490
|
-
this.insert_if_not(getVerbForm(data.forms, key) || [], f);
|
|
491
|
-
}
|
|
492
|
-
this.insert_if_not(getVerbForm(data.forms, key) || [], this.ivi_ive(f));
|
|
493
|
-
}
|
|
494
|
-
}
|
|
495
|
-
});
|
|
496
|
-
}
|
|
497
|
-
});
|
|
498
|
-
|
|
499
|
-
this.conjugations.set("irreg", (args: ArgMap, data: ConjugationData, typeinfo: ConjugationInfo) => {
|
|
500
|
-
const verb = this.ine(args.get("1"));
|
|
501
|
-
const prefix = this.ine(args.get("2"));
|
|
502
|
-
if (!verb) {
|
|
503
|
-
throw Error("The verb to be conjugated has not been specified.");
|
|
504
|
-
}
|
|
505
|
-
|
|
506
|
-
const conj = this.irreg_conjugations.get(verb);
|
|
507
|
-
if (!conj) {
|
|
508
|
-
throw Error(`The verb ${verb} is not recognised as an irregular verb.`);
|
|
509
|
-
}
|
|
510
|
-
|
|
511
|
-
typeinfo.verb = verb;
|
|
512
|
-
typeinfo.prefix = prefix;
|
|
513
|
-
conj(args, data, typeinfo);
|
|
514
|
-
});
|
|
515
|
-
|
|
516
|
-
this.setup_irreg_conjs();
|
|
517
|
-
}
|
|
518
|
-
|
|
519
|
-
private set_3rd_conj_categories(data: ConjugationData, typeinfo: ConjugationInfo) {
|
|
520
|
-
data.categories.push("Latin third conjugation verbs");
|
|
521
|
-
|
|
522
|
-
for (let perf_stem of typeinfo.perf_stem) {
|
|
523
|
-
let pres_stem = typeinfo.pres_stem;
|
|
524
|
-
pres_stem = pres_stem.replace(/qu/g, "1");
|
|
525
|
-
perf_stem = perf_stem.replace(/qu/g, "1");
|
|
526
|
-
if (perf_stem == pres_stem + "āv") {
|
|
527
|
-
data.categories.push("Latin third conjugation verbs with perfect in -av-");
|
|
528
|
-
} else if (perf_stem == pres_stem + "ēv") {
|
|
529
|
-
data.categories.push("Latin third conjugation verbs with perfect in -ev-");
|
|
530
|
-
} else if (perf_stem == pres_stem + "īv") {
|
|
531
|
-
data.categories.push("Latin third conjugation verbs with perfect in -iv-");
|
|
532
|
-
} else if (perf_stem == pres_stem + "i") {
|
|
533
|
-
data.categories.push("Latin third conjugation verbs with perfect in -i-");
|
|
534
|
-
} else if (perf_stem == pres_stem + "u") {
|
|
535
|
-
data.categories.push("Latin third conjugation verbs with perfect in -u-");
|
|
536
|
-
} else if (perf_stem == pres_stem) {
|
|
537
|
-
data.categories.push("Latin third conjugation verbs with suffixless perfect");
|
|
538
|
-
} else if (this.has_perf_in_s_or_x(pres_stem, perf_stem)) {
|
|
539
|
-
data.categories.push("Latin third conjugation verbs with perfect in -s- or -x-");
|
|
540
|
-
} else {
|
|
541
|
-
data.categories.push("Latin third conjugation verbs with irregular perfect");
|
|
542
|
-
}
|
|
543
|
-
}
|
|
544
|
-
}
|
|
545
|
-
|
|
546
|
-
private iter_slots(include_generic: boolean, include_linked: boolean): string[] {
|
|
547
|
-
let stage = 1;
|
|
548
|
-
let slotnum = 0;
|
|
549
|
-
let max_slotnum = this.non_generic_slots.length;
|
|
550
|
-
|
|
551
|
-
const entries: string[] = [];
|
|
552
|
-
|
|
553
|
-
while (true) {
|
|
554
|
-
if (slotnum >= max_slotnum) {
|
|
555
|
-
slotnum = 0;
|
|
556
|
-
stage++;
|
|
557
|
-
if (stage == 2) {
|
|
558
|
-
if (include_generic) {
|
|
559
|
-
max_slotnum = this.generic_slots.length;
|
|
560
|
-
} else {
|
|
561
|
-
stage++;
|
|
562
|
-
}
|
|
563
|
-
}
|
|
564
|
-
if (stage == 3) {
|
|
565
|
-
if (include_linked) {
|
|
566
|
-
max_slotnum = LaVerb.potential_lemma_slots.length;
|
|
567
|
-
} else {
|
|
568
|
-
stage++;
|
|
569
|
-
}
|
|
570
|
-
}
|
|
571
|
-
if (stage > 3) {
|
|
572
|
-
break;
|
|
573
|
-
}
|
|
574
|
-
}
|
|
575
|
-
if (stage == 1) {
|
|
576
|
-
entries.push(this.non_generic_slots[slotnum]);
|
|
577
|
-
} else if (stage == 2) {
|
|
578
|
-
entries.push(this.generic_slots[slotnum]);
|
|
579
|
-
} else {
|
|
580
|
-
entries.push("linked_" + LaVerb.potential_lemma_slots[slotnum]);
|
|
581
|
-
}
|
|
582
|
-
slotnum++;
|
|
583
|
-
}
|
|
584
|
-
|
|
585
|
-
return entries;
|
|
586
|
-
}
|
|
587
|
-
|
|
588
|
-
private initialize_slots(): [string[], string[]] {
|
|
589
|
-
const generic_slots: string[] = [];
|
|
590
|
-
const non_generic_slots: string[] = [];
|
|
591
|
-
|
|
592
|
-
const handle_slot = (slot: string, generic: boolean) => {
|
|
593
|
-
if (generic) {
|
|
594
|
-
generic_slots.push(slot);
|
|
595
|
-
} else {
|
|
596
|
-
non_generic_slots.push(slot);
|
|
597
|
-
}
|
|
598
|
-
};
|
|
599
|
-
|
|
600
|
-
for (const v of ["actv", "pasv"]) {
|
|
601
|
-
const handle_tense = (t: string, mood: string) => {
|
|
602
|
-
const non_pers_slot = t + "_" + v + "_" + mood;
|
|
603
|
-
handle_slot(non_pers_slot, true);
|
|
604
|
-
for (const p of ["1s", "2s", "3s", "1p", "2p", "3p"]) {
|
|
605
|
-
handle_slot(p + "_" + non_pers_slot, false);
|
|
606
|
-
}
|
|
607
|
-
};
|
|
608
|
-
|
|
609
|
-
for (const t of ["pres", "impf", "futr", "perf", "plup", "futp"]) {
|
|
610
|
-
handle_tense(t, "indc");
|
|
611
|
-
}
|
|
612
|
-
|
|
613
|
-
for (const t of ["pres", "impf", "perf", "plup"]) {
|
|
614
|
-
handle_tense(t, "subj");
|
|
615
|
-
}
|
|
616
|
-
|
|
617
|
-
for (const t of ["pres", "futr"]) {
|
|
618
|
-
handle_tense(t, "impr");
|
|
619
|
-
}
|
|
620
|
-
}
|
|
621
|
-
|
|
622
|
-
for (const f of ["inf", "ptc"]) {
|
|
623
|
-
for (const t of ["pres_actv", "perf_actv", "futr_actv", "pres_pasv", "perf_pasv", "futr_pasv"]) {
|
|
624
|
-
handle_slot(t + "_" + f, false);
|
|
625
|
-
}
|
|
626
|
-
}
|
|
627
|
-
|
|
628
|
-
for (const n of ["ger_gen", "ger_dat", "ger_acc", "ger_abl", "sup_acc", "sup_abl"]) {
|
|
629
|
-
handle_slot(n, false);
|
|
630
|
-
}
|
|
631
|
-
|
|
632
|
-
return [non_generic_slots, generic_slots];
|
|
633
|
-
}
|
|
634
|
-
|
|
635
|
-
private detect_decl_and_subtypes(args: ArgMap): [ConjType, ConjType | undefined, Set<VerbType>, string, string] {
|
|
636
|
-
const specs = args.get("1")?.split(".");
|
|
637
|
-
const subtypes = new Set<VerbType>();
|
|
638
|
-
let conj_arg ="";
|
|
639
|
-
|
|
640
|
-
if (!specs) {
|
|
641
|
-
throw Error("No specs");
|
|
642
|
-
}
|
|
643
|
-
|
|
644
|
-
for (let [i, spec] of specs.entries()) {
|
|
645
|
-
if (i == 0) {
|
|
646
|
-
conj_arg = spec;
|
|
647
|
-
} else {
|
|
648
|
-
const begins_with_hypen = spec.startsWith("-");
|
|
649
|
-
spec = spec.replace(/-/g, "");
|
|
650
|
-
if (begins_with_hypen) {
|
|
651
|
-
spec = "-" + spec;
|
|
652
|
-
}
|
|
653
|
-
addVerbType(subtypes, spec);
|
|
654
|
-
}
|
|
655
|
-
}
|
|
656
|
-
|
|
657
|
-
let orig_lemma = args.get("2");
|
|
658
|
-
if (!orig_lemma) {
|
|
659
|
-
throw Error("No orig_lemma");
|
|
660
|
-
}
|
|
661
|
-
|
|
662
|
-
orig_lemma = orig_lemma.replace(/o$/, "ō");
|
|
663
|
-
const lemma = orig_lemma;
|
|
664
|
-
const match = conj_arg.match(/^([124])(\+\+?)$/);
|
|
665
|
-
let base_conj_arg = "";
|
|
666
|
-
let auto_perf_supine = "";
|
|
667
|
-
if (match) {
|
|
668
|
-
base_conj_arg = match[1];
|
|
669
|
-
auto_perf_supine = match[2];
|
|
670
|
-
if (base_conj_arg) {
|
|
671
|
-
if (auto_perf_supine == "++" && base_conj_arg != "4") {
|
|
672
|
-
throw Error("Conjugation types 1++ and 2++ not allowed");
|
|
673
|
-
}
|
|
674
|
-
conj_arg = base_conj_arg;
|
|
675
|
-
}
|
|
676
|
-
}
|
|
677
|
-
|
|
678
|
-
if (orig_lemma.startsWith("-")) {
|
|
679
|
-
addVerbType(subtypes, "suffix");
|
|
680
|
-
}
|
|
681
|
-
|
|
682
|
-
let conjtype: ConjType;
|
|
683
|
-
let base = "";
|
|
684
|
-
let auto_perf = "";
|
|
685
|
-
let auto_supine = "";
|
|
686
|
-
let detected_subtypes: string[] = [];
|
|
687
|
-
let conj_subtype: ConjType | undefined;
|
|
688
|
-
if (conj_arg == "1") {
|
|
689
|
-
conjtype = "1st";
|
|
690
|
-
[base, detected_subtypes] = this.get_subtype_by_ending(lemma, "1", subtypes, new Map([
|
|
691
|
-
["ō", []],
|
|
692
|
-
["or", ["depon"]],
|
|
693
|
-
["at", ["impers"]],
|
|
694
|
-
["ātur", ["depon", "impers"]],
|
|
695
|
-
["ī", ["perfaspres"]]
|
|
696
|
-
]));
|
|
697
|
-
if (auto_perf_supine) {
|
|
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
|
-
}
|
|
708
|
-
}
|
|
709
|
-
} else if (conj_arg == "2") {
|
|
710
|
-
conjtype = "2nd";
|
|
711
|
-
[base, detected_subtypes] = this.get_subtype_by_ending(lemma, "2", subtypes, new Map([
|
|
712
|
-
["eō", []],
|
|
713
|
-
["eor", ["depon"]],
|
|
714
|
-
["et", ["impers"]],
|
|
715
|
-
["ētur", ["depon", "impers"]],
|
|
716
|
-
["ī", ["perfaspres"]]
|
|
717
|
-
]));
|
|
718
|
-
if (auto_perf_supine) {
|
|
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");
|
|
728
|
-
}
|
|
729
|
-
} else if (conj_arg == "3") {
|
|
730
|
-
[base, detected_subtypes] = this.get_subtype_by_ending(lemma, "", subtypes, new Map([
|
|
731
|
-
["iō", ["I"]],
|
|
732
|
-
["ior", ["depon", "I"]],
|
|
733
|
-
]));
|
|
734
|
-
if (base) {
|
|
735
|
-
conjtype = "3rd-io";
|
|
736
|
-
} else {
|
|
737
|
-
[base, detected_subtypes] = this.get_subtype_by_ending(lemma, "3", subtypes, new Map([
|
|
738
|
-
["ō", []],
|
|
739
|
-
["or", ["depon"]],
|
|
740
|
-
["it", ["impers"]],
|
|
741
|
-
["itur", ["depon", "impers"]],
|
|
742
|
-
["ī", ["perfaspres"]],
|
|
743
|
-
]));
|
|
744
|
-
if (hasVerbType(subtypes, "I")) {
|
|
745
|
-
conjtype = "3rd-io";
|
|
746
|
-
} else {
|
|
747
|
-
conjtype = "3rd";
|
|
748
|
-
}
|
|
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
|
-
}
|
|
758
|
-
} else if (conj_arg == "4") {
|
|
759
|
-
conjtype = "4th";
|
|
760
|
-
[base, detected_subtypes] = this.get_subtype_by_ending(lemma, "4", subtypes, new Map([
|
|
761
|
-
["iō", []],
|
|
762
|
-
["ior", ["depon"]],
|
|
763
|
-
["it", ["impers"]],
|
|
764
|
-
["ītur", ["depon", "impers"]],
|
|
765
|
-
["ī", ["perfaspres"]]
|
|
766
|
-
]));
|
|
767
|
-
|
|
768
|
-
if (hasVerbType(subtypes, "perfaspres")) {
|
|
769
|
-
auto_perf = base;
|
|
770
|
-
} else if (auto_perf_supine == "++") {
|
|
771
|
-
auto_perf = base + "īv/" + base + "i";
|
|
772
|
-
auto_supine = base + "īt";
|
|
773
|
-
} else if (auto_perf_supine == "+") {
|
|
774
|
-
auto_perf = base + "īv";
|
|
775
|
-
auto_supine = base + "īt";
|
|
776
|
-
}
|
|
777
|
-
if (hasVerbType(subtypes, "suffix")) {
|
|
778
|
-
addVerbType(subtypes, "sigm");
|
|
779
|
-
}
|
|
780
|
-
} else if (conj_arg == "irreg") {
|
|
781
|
-
let prefix: string;
|
|
782
|
-
conjtype = "irreg";
|
|
783
|
-
[prefix, base] = this.split_prefix_and_base(lemma, [
|
|
784
|
-
"aiō",
|
|
785
|
-
"aiiō",
|
|
786
|
-
"ajō",
|
|
787
|
-
"dīcō",
|
|
788
|
-
"dūcō",
|
|
789
|
-
"faciō",
|
|
790
|
-
"fīō",
|
|
791
|
-
"ferō",
|
|
792
|
-
"inquam",
|
|
793
|
-
"libet",
|
|
794
|
-
"lubet",
|
|
795
|
-
"licet",
|
|
796
|
-
"volō",
|
|
797
|
-
"mālō",
|
|
798
|
-
"nōlō",
|
|
799
|
-
"possum",
|
|
800
|
-
"piget",
|
|
801
|
-
"coepī",
|
|
802
|
-
"sum",
|
|
803
|
-
"edō",
|
|
804
|
-
"dō",
|
|
805
|
-
"eō",
|
|
806
|
-
]);
|
|
807
|
-
conj_subtype = this.irreg_verbs_to_conj_type.get(base);
|
|
808
|
-
if (!conj_subtype) {
|
|
809
|
-
throw Error(`No conj_subtype for ${base}`);
|
|
810
|
-
}
|
|
811
|
-
args.set("1", strip_macrons(base));
|
|
812
|
-
args.set("2", prefix);
|
|
813
|
-
detected_subtypes = [];
|
|
814
|
-
} else {
|
|
815
|
-
throw Error(`Unrecognized conjugation '${conj_arg}'`);
|
|
816
|
-
}
|
|
817
|
-
|
|
818
|
-
for (const detected_subtype of detected_subtypes) {
|
|
819
|
-
if (detected_subtype == "impers" && hasVerbType(subtypes, "3only")) {
|
|
820
|
-
// nothing to do
|
|
821
|
-
} else {
|
|
822
|
-
addVerbType(subtypes, detected_subtype);
|
|
823
|
-
}
|
|
824
|
-
}
|
|
825
|
-
|
|
826
|
-
if (conjtype != "irreg") {
|
|
827
|
-
args.set("1", base);
|
|
828
|
-
let perf_stem = "";
|
|
829
|
-
let supine_stem = "";
|
|
830
|
-
if (hasVerbType(subtypes, "depon") || hasVerbType(subtypes, "semidepon") || hasVerbType(subtypes, "perfaspres")) {
|
|
831
|
-
supine_stem = args.get("3") || auto_supine;
|
|
832
|
-
if (supine_stem == "-" && !hasVerbType(subtypes, "suffix")) {
|
|
833
|
-
supine_stem = "";
|
|
834
|
-
}
|
|
835
|
-
if (!supine_stem) {
|
|
836
|
-
if (hasVerbType(subtypes, "depon") || hasVerbType(subtypes, "semidepon")) {
|
|
837
|
-
addVerbType(subtypes, "noperf");
|
|
838
|
-
}
|
|
839
|
-
addVerbType(subtypes, "nosup");
|
|
840
|
-
}
|
|
841
|
-
args.set("2", supine_stem);
|
|
842
|
-
args.delete("3");
|
|
843
|
-
} else {
|
|
844
|
-
perf_stem = args.get("3") || auto_perf;
|
|
845
|
-
if (perf_stem == "-" && !hasVerbType(subtypes, "suffix")) {
|
|
846
|
-
perf_stem = "";
|
|
847
|
-
}
|
|
848
|
-
if (!perf_stem) {
|
|
849
|
-
addVerbType(subtypes, "noperf");
|
|
850
|
-
}
|
|
851
|
-
supine_stem = args.get("4") || auto_supine;
|
|
852
|
-
if (supine_stem == "-" && !hasVerbType(subtypes, "suffix")) {
|
|
853
|
-
supine_stem = "";
|
|
854
|
-
}
|
|
855
|
-
if (!supine_stem) {
|
|
856
|
-
addVerbType(subtypes, "nosup");
|
|
857
|
-
}
|
|
858
|
-
args.set("2", perf_stem);
|
|
859
|
-
args.set("3", supine_stem);
|
|
860
|
-
}
|
|
861
|
-
args.delete("4");
|
|
862
|
-
|
|
863
|
-
if (hasVerbType(subtypes, "depon") && hasVerbType(subtypes, "semidepon")) {
|
|
864
|
-
// added by @fpw: Support for revertor which is a reverse semi-depon
|
|
865
|
-
perf_stem = base;
|
|
866
|
-
args.set("3", perf_stem);
|
|
867
|
-
subtypes.delete(VerbType.Deponent);
|
|
868
|
-
}
|
|
869
|
-
}
|
|
870
|
-
|
|
871
|
-
for (const subtype of subtypes) {
|
|
872
|
-
if (!this.allowed_subtypes.has(subtype)) {
|
|
873
|
-
if (!(conjtype == "3rd" && subtype == "-I") && !(conjtype == "3rd-io" && subtype == "I") && !(subtype == "suffix")) {
|
|
874
|
-
throw Error(`Unrecognized verb subtype: ${subtype}`);
|
|
875
|
-
}
|
|
876
|
-
}
|
|
877
|
-
}
|
|
878
|
-
|
|
879
|
-
return [conjtype, conj_subtype, subtypes, orig_lemma, lemma];
|
|
880
|
-
}
|
|
881
|
-
|
|
882
|
-
private get_subtype_by_ending(lemma: string, conjtype: string, specified_subtypes: Set<VerbType>, endings_and_subtypes: FormMap<string>): [string, string[]] {
|
|
883
|
-
for (const [ending, subtypes] of endings_and_subtypes) {
|
|
884
|
-
let not_this_subtype = false;
|
|
885
|
-
for (const subtype of subtypes) {
|
|
886
|
-
if (hasVerbType(specified_subtypes, `-${subtype}`)) {
|
|
887
|
-
not_this_subtype = true;
|
|
888
|
-
break;
|
|
889
|
-
}
|
|
890
|
-
}
|
|
891
|
-
if (!not_this_subtype) {
|
|
892
|
-
const base = extract_base(lemma, ending);
|
|
893
|
-
if (base) {
|
|
894
|
-
return [base, subtypes];
|
|
895
|
-
}
|
|
896
|
-
}
|
|
897
|
-
}
|
|
898
|
-
if (conjtype) {
|
|
899
|
-
throw Error(`Unrecognized ending for conjugation-${conjtype} verb: ${lemma}`);
|
|
900
|
-
}
|
|
901
|
-
return ["", []];
|
|
902
|
-
}
|
|
903
|
-
|
|
904
|
-
private split_prefix_and_base(lemma: string, main_verbs: string[]): [string, string] {
|
|
905
|
-
for (const main of main_verbs) {
|
|
906
|
-
const regex = new RegExp(`^(.*)${main}$`);
|
|
907
|
-
const match = lemma.match(regex);
|
|
908
|
-
if (match) {
|
|
909
|
-
const prefix = match[1];
|
|
910
|
-
return [prefix, main];
|
|
911
|
-
}
|
|
912
|
-
}
|
|
913
|
-
throw Error(`Argument ${lemma} doesn't end in any of ${main_verbs.join(", ")}`);
|
|
914
|
-
}
|
|
915
|
-
|
|
916
|
-
private get_regular_stems(args: ArgMap, typeinfo: ConjugationInfo) {
|
|
917
|
-
let pres_stem = "";
|
|
918
|
-
let perf_stem = "";
|
|
919
|
-
let supine_stem = "";
|
|
920
|
-
|
|
921
|
-
if (hasVerbType(typeinfo.subtypes, "depon") || hasVerbType(typeinfo.subtypes, "semidepon")) {
|
|
922
|
-
pres_stem = this.ine(args.get("1"));
|
|
923
|
-
supine_stem = this.ine(args.get("2"));
|
|
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"));
|
|
928
|
-
} else {
|
|
929
|
-
pres_stem = this.ine(args.get("1"));
|
|
930
|
-
perf_stem = this.ine(args.get("2"));
|
|
931
|
-
supine_stem = this.ine(args.get("3"));
|
|
932
|
-
}
|
|
933
|
-
|
|
934
|
-
if (!pres_stem) {
|
|
935
|
-
if (hasVerbType(typeinfo.subtypes, "perfaspres")) {
|
|
936
|
-
pres_stem = "-";
|
|
937
|
-
} else {
|
|
938
|
-
throw Error("No present stem");
|
|
939
|
-
}
|
|
940
|
-
}
|
|
941
|
-
|
|
942
|
-
typeinfo.pres_stem = pres_stem;
|
|
943
|
-
|
|
944
|
-
if (perf_stem) {
|
|
945
|
-
typeinfo.perf_stem = perf_stem.split("/");
|
|
946
|
-
} else {
|
|
947
|
-
typeinfo.perf_stem = [];
|
|
948
|
-
}
|
|
949
|
-
|
|
950
|
-
if (supine_stem) {
|
|
951
|
-
typeinfo.supine_stem = supine_stem.split("/");
|
|
952
|
-
} else {
|
|
953
|
-
typeinfo.supine_stem = [];
|
|
954
|
-
}
|
|
955
|
-
}
|
|
956
|
-
|
|
957
|
-
private ine(str?: string): string {
|
|
958
|
-
if (!str) {
|
|
959
|
-
return "";
|
|
960
|
-
} else {
|
|
961
|
-
return str;
|
|
962
|
-
}
|
|
963
|
-
}
|
|
964
|
-
|
|
965
|
-
private add_forms(data: ConjugationData, keytype: string, stem: string, suf1s: any, suf2s: any, suf3s: any, suf1p: any, suf2p: any, suf3p: any) {
|
|
966
|
-
this.add_form(data, "1s_" + keytype, stem, suf1s);
|
|
967
|
-
this.add_form(data, "2s_" + keytype, stem, suf2s);
|
|
968
|
-
this.add_form(data, "3s_" + keytype, stem, suf3s);
|
|
969
|
-
this.add_form(data, "1p_" + keytype, stem, suf1p);
|
|
970
|
-
this.add_form(data, "2p_" + keytype, stem, suf2p);
|
|
971
|
-
this.add_form(data, "3p_" + keytype, stem, suf3p);
|
|
972
|
-
}
|
|
973
|
-
|
|
974
|
-
private add_23_forms(data: ConjugationData, keytype: string, stem: string, suf2s: any, suf3s: any, suf2p: any, suf3p: any) {
|
|
975
|
-
this.add_form(data, "2s_" + keytype, stem, suf2s);
|
|
976
|
-
this.add_form(data, "3s_" + keytype, stem, suf3s);
|
|
977
|
-
this.add_form(data, "2p_" + keytype, stem, suf2p);
|
|
978
|
-
this.add_form(data, "3p_" + keytype, stem, suf3p);
|
|
979
|
-
}
|
|
980
|
-
|
|
981
|
-
private add_2_forms(data: ConjugationData, keytype: string, stem: string, suf2s: any, suf2p: any) {
|
|
982
|
-
this.add_form(data, "2s_" + keytype, stem, suf2s);
|
|
983
|
-
this.add_form(data, "2p_" + keytype, stem, suf2p);
|
|
984
|
-
}
|
|
985
|
-
|
|
986
|
-
private add_form(data: ConjugationData, key: string, stem: string, suf: string | string[], pos = 0) {
|
|
987
|
-
if (suf === undefined || (!stem && !suf)) {
|
|
988
|
-
return;
|
|
989
|
-
}
|
|
990
|
-
|
|
991
|
-
let sufArr: string[] = [];
|
|
992
|
-
if (typeof(suf) == "string") {
|
|
993
|
-
sufArr.push(suf);
|
|
994
|
-
} else {
|
|
995
|
-
sufArr = suf;
|
|
996
|
-
}
|
|
997
|
-
|
|
998
|
-
for (const s of sufArr) {
|
|
999
|
-
const form = getVerbForm(data.forms, key);
|
|
1000
|
-
if (!form) {
|
|
1001
|
-
setVerbForm(data.forms, key, []);
|
|
1002
|
-
}
|
|
1003
|
-
this.insert_if_not(getVerbForm(data.forms, key) || [], stem + s, pos);
|
|
1004
|
-
}
|
|
1005
|
-
}
|
|
1006
|
-
|
|
1007
|
-
private insert_if_not(data: string[], entry: string, pos = 0) {
|
|
1008
|
-
if (data.includes(entry)) {
|
|
1009
|
-
return;
|
|
1010
|
-
}
|
|
1011
|
-
if (pos == 0) {
|
|
1012
|
-
data.push(entry);
|
|
1013
|
-
} else {
|
|
1014
|
-
data.splice(pos - 1, 0, entry);
|
|
1015
|
-
}
|
|
1016
|
-
}
|
|
1017
|
-
|
|
1018
|
-
private make_pres_1st(data: ConjugationData, typeinfo: ConjugationInfo, pres_stem: string) {
|
|
1019
|
-
if (!pres_stem) {
|
|
1020
|
-
return;
|
|
1021
|
-
}
|
|
1022
|
-
|
|
1023
|
-
this.add_forms(data, "pres_actv_indc", pres_stem, "ō", "ās", "at", "āmus", "ātis", "ant");
|
|
1024
|
-
this.add_forms(data, "impf_actv_indc", pres_stem, "ābam", "ābās", "ābat", "ābāmus", "ābātis", "ābant");
|
|
1025
|
-
this.add_forms(data, "futr_actv_indc", pres_stem, "ābō", "ābis", "ābit", "ābimus", "ābitis", "ābunt");
|
|
1026
|
-
|
|
1027
|
-
this.add_forms(data, "pres_pasv_indc", pres_stem, "or", ["āris", "āre"], "ātur", "āmur", "āminī", "antur");
|
|
1028
|
-
this.add_forms(data, "impf_pasv_indc", pres_stem, "ābar", ["ābāris", "ābāre"], "ābātur", "ābāmur", "ābāminī", "ābantur");
|
|
1029
|
-
this.add_forms(data, "futr_pasv_indc", pres_stem, "ābor", ["āberis", "ābere"], "ābitur", "ābimur", "ābiminī", "ābuntur");
|
|
1030
|
-
|
|
1031
|
-
this.add_forms(data, "pres_actv_subj", pres_stem, "em", "ēs", "et", "ēmus", "ētis", "ent");
|
|
1032
|
-
this.add_forms(data, "impf_actv_subj", pres_stem, "ārem", "ārēs", "āret", "ārēmus", "ārētis", "ārent");
|
|
1033
|
-
|
|
1034
|
-
this.add_forms(data, "pres_pasv_subj", pres_stem, "er", ["ēris", "ēre"], "ētur", "ēmur", "ēminī", "entur");
|
|
1035
|
-
this.add_forms(data, "impf_pasv_subj", pres_stem, "ārer", ["ārēris", "ārēre"], "ārētur", "ārēmur", "ārēminī", "ārentur");
|
|
1036
|
-
|
|
1037
|
-
this.add_2_forms(data, "pres_actv_impr", pres_stem, "ā", "āte");
|
|
1038
|
-
this.add_23_forms(data, "futr_actv_impr", pres_stem, "ātō", "ātō", "ātōte", "antō");
|
|
1039
|
-
|
|
1040
|
-
this.add_2_forms(data, "pres_pasv_impr", pres_stem, "āre", "āminī");
|
|
1041
|
-
this.add_23_forms(data, "futr_pasv_impr", pres_stem, "ātor", "ātor", [], "antor");
|
|
1042
|
-
|
|
1043
|
-
setVerbForm(data.forms, "pres_actv_inf", [pres_stem + "āre"]);
|
|
1044
|
-
setVerbForm(data.forms, "pres_pasv_inf", [pres_stem + "ārī"]);
|
|
1045
|
-
|
|
1046
|
-
setVerbForm(data.forms, "pres_actv_ptc", [pres_stem + "āns"]);
|
|
1047
|
-
|
|
1048
|
-
this.make_gerund(data, typeinfo, pres_stem + "and");
|
|
1049
|
-
}
|
|
1050
|
-
|
|
1051
|
-
private make_pres_2nd(data: ConjugationData, typeinfo: ConjugationInfo, pres_stem: string, nopass = false, noimpr = false) {
|
|
1052
|
-
this.add_forms(data, "pres_actv_indc", pres_stem, "eō", "ēs", "et", "ēmus", "ētis", "ent");
|
|
1053
|
-
this.add_forms(data, "impf_actv_indc", pres_stem, "ēbam", "ēbās", "ēbat", "ēbāmus", "ēbātis", "ēbant");
|
|
1054
|
-
this.add_forms(data, "futr_actv_indc", pres_stem, "ēbō", "ēbis", "ēbit", "ēbimus", "ēbitis", "ēbunt");
|
|
1055
|
-
|
|
1056
|
-
this.add_forms(data, "pres_actv_subj", pres_stem, "eam", "eās", "eat", "eāmus", "eātis", "eant");
|
|
1057
|
-
this.add_forms(data, "impf_actv_subj", pres_stem, "ērem", "ērēs", "ēret", "ērēmus", "ērētis", "ērent");
|
|
1058
|
-
|
|
1059
|
-
if (!noimpr) {
|
|
1060
|
-
this.add_2_forms(data, "pres_actv_impr", pres_stem, "ē", "ēte");
|
|
1061
|
-
this.add_23_forms(data, "futr_actv_impr", pres_stem, "ētō", "ētō", "ētōte", "entō");
|
|
1062
|
-
}
|
|
1063
|
-
|
|
1064
|
-
if (!nopass) {
|
|
1065
|
-
this.add_forms(data, "pres_pasv_indc", pres_stem, "eor", ["ēris", "ēre"], "ētur", "ēmur", "ēminī", "entur");
|
|
1066
|
-
this.add_forms(data, "impf_pasv_indc", pres_stem, "ēbar", ["ēbāris", "ēbāre"], "ēbātur", "ēbāmur", "ēbāminī", "ēbantur");
|
|
1067
|
-
this.add_forms(data, "futr_pasv_indc", pres_stem, "ēbor", ["ēberis", "ēbere"], "ēbitur", "ēbimur", "ēbiminī", "ēbuntur");
|
|
1068
|
-
|
|
1069
|
-
this.add_forms(data, "pres_pasv_subj", pres_stem, "ear", ["eāris", "eāre"], "eātur", "eāmur", "eāminī", "eantur");
|
|
1070
|
-
this.add_forms(data, "impf_pasv_subj", pres_stem, "ērer", ["ērēris", "ērēre"], "ērētur", "ērēmur", "ērēminī", "ērentur");
|
|
1071
|
-
|
|
1072
|
-
if (!noimpr) {
|
|
1073
|
-
this.add_2_forms(data, "pres_pasv_impr", pres_stem, "ēre", "ēminī");
|
|
1074
|
-
this.add_23_forms(data, "futr_pasv_impr", pres_stem, "ētor", "ētor", [], "entor");
|
|
1075
|
-
}
|
|
1076
|
-
}
|
|
1077
|
-
|
|
1078
|
-
setVerbForm(data.forms, "pres_actv_inf", [pres_stem + "ēre"]);
|
|
1079
|
-
if (!nopass) {
|
|
1080
|
-
setVerbForm(data.forms, "pres_pasv_inf", [pres_stem + "ērī"]);
|
|
1081
|
-
}
|
|
1082
|
-
|
|
1083
|
-
setVerbForm(data.forms, "pres_actv_ptc", [pres_stem + "ēns"]);
|
|
1084
|
-
this.make_gerund(data, typeinfo, pres_stem + "end", false, false, nopass);
|
|
1085
|
-
}
|
|
1086
|
-
|
|
1087
|
-
private make_pres_3rd(data: ConjugationData, typeinfo: ConjugationInfo, pres_stem: string, nopass = false, noimpr = false) {
|
|
1088
|
-
this.add_forms(data, "pres_actv_indc", pres_stem, "ō", "is", "it", "imus", "itis", "unt");
|
|
1089
|
-
this.add_forms(data, "impf_actv_indc", pres_stem, "ēbam", "ēbās", "ēbat", "ēbāmus", "ēbātis", "ēbant");
|
|
1090
|
-
this.add_forms(data, "futr_actv_indc", pres_stem, "am", "ēs", "et", "ēmus", "ētis", "ent");
|
|
1091
|
-
|
|
1092
|
-
this.add_forms(data, "pres_pasv_indc", pres_stem, "or", ["eris", "ere"], "itur", "imur", "iminī", "untur");
|
|
1093
|
-
this.add_forms(data, "impf_pasv_indc", pres_stem, "ēbar", ["ēbāris", "ēbāre"], "ēbātur", "ēbāmur", "ēbāminī", "ēbantur");
|
|
1094
|
-
this.add_forms(data, "futr_pasv_indc", pres_stem, "ar", ["ēris", "ēre"], "ētur", "ēmur", "ēminī", "entur");
|
|
1095
|
-
|
|
1096
|
-
this.add_forms(data, "pres_actv_subj", pres_stem, "am", "ās", "at", "āmus", "ātis", "ant");
|
|
1097
|
-
this.add_forms(data, "impf_actv_subj", pres_stem, "erem", "erēs", "eret", "erēmus", "erētis", "erent");
|
|
1098
|
-
|
|
1099
|
-
this.add_forms(data, "pres_pasv_subj", pres_stem, "ar", ["āris", "āre"], "ātur", "āmur", "āminī", "antur");
|
|
1100
|
-
this.add_forms(data, "impf_pasv_subj", pres_stem, "erer", ["erēris", "erēre"], "erētur", "erēmur", "erēminī", "erentur");
|
|
1101
|
-
|
|
1102
|
-
this.add_2_forms(data, "pres_actv_impr", pres_stem, "e", "ite");
|
|
1103
|
-
this.add_23_forms(data, "futr_actv_impr", pres_stem, "itō", "itō", "itōte", "untō");
|
|
1104
|
-
|
|
1105
|
-
this.add_2_forms(data, "pres_pasv_impr", pres_stem, "ere", "iminī");
|
|
1106
|
-
this.add_23_forms(data, "futr_pasv_impr", pres_stem, "itor", "itor", [], "untor");
|
|
1107
|
-
|
|
1108
|
-
setVerbForm(data.forms, "pres_actv_inf", [pres_stem + "ere"]);
|
|
1109
|
-
setVerbForm(data.forms, "pres_pasv_inf", [pres_stem + "ī"]);
|
|
1110
|
-
setVerbForm(data.forms, "pres_actv_ptc", [pres_stem + "ēns"]);
|
|
1111
|
-
|
|
1112
|
-
this.make_gerund(data, typeinfo, pres_stem + "end", true);
|
|
1113
|
-
}
|
|
1114
|
-
|
|
1115
|
-
private make_pres_3rd_io(data: ConjugationData, typeinfo: ConjugationInfo, pres_stem: string, nopass = false, noimpr = false) {
|
|
1116
|
-
this.add_forms(data, "pres_actv_indc", pres_stem, "iō", "is", "it", "imus", "itis", "iunt");
|
|
1117
|
-
this.add_forms(data, "impf_actv_indc", pres_stem, "iēbam", "iēbās", "iēbat", "iēbāmus", "iēbātis", "iēbant");
|
|
1118
|
-
this.add_forms(data, "futr_actv_indc", pres_stem, "iam", "iēs", "iet", "iēmus", "iētis", "ient");
|
|
1119
|
-
|
|
1120
|
-
this.add_forms(data, "pres_actv_subj", pres_stem, "iam", "iās", "iat", "iāmus", "iātis", "iant");
|
|
1121
|
-
this.add_forms(data, "impf_actv_subj", pres_stem, "erem", "erēs", "eret", "erēmus", "erētis", "erent");
|
|
1122
|
-
|
|
1123
|
-
this.add_2_forms(data, "pres_actv_impr", pres_stem, "e", "ite");
|
|
1124
|
-
this.add_23_forms(data, "futr_actv_impr", pres_stem, "itō", "itō", "itōte", "iuntō");
|
|
1125
|
-
|
|
1126
|
-
if (!nopass) {
|
|
1127
|
-
this.add_forms(data, "pres_pasv_indc", pres_stem, "ior", ["eris", "ere"], "itur", "imur", "iminī", "iuntur");
|
|
1128
|
-
this.add_forms(data, "impf_pasv_indc", pres_stem, "iēbar", ["iēbāris", "iēbāre"], "iēbātur", "iēbāmur", "iēbāminī", "iēbantur");
|
|
1129
|
-
this.add_forms(data, "futr_pasv_indc", pres_stem, "iar", ["iēris", "iēre"], "iētur", "iēmur", "iēminī", "ientur");
|
|
1130
|
-
|
|
1131
|
-
this.add_forms(data, "pres_pasv_subj", pres_stem, "iar", ["iāris", "iāre"], "iātur", "iāmur", "iāminī", "iantur");
|
|
1132
|
-
this.add_forms(data, "impf_pasv_subj", pres_stem, "erer", ["erēris", "erēre"], "erētur", "erēmur", "erēminī", "erentur");
|
|
1133
|
-
|
|
1134
|
-
this.add_2_forms(data, "pres_pasv_impr", pres_stem, "ere", "iminī");
|
|
1135
|
-
this.add_23_forms(data, "futr_pasv_impr", pres_stem, "itor", "itor", [], "iuntor");
|
|
1136
|
-
}
|
|
1137
|
-
|
|
1138
|
-
setVerbForm(data.forms, "pres_actv_inf", [pres_stem + "ere"]);
|
|
1139
|
-
if (!nopass) {
|
|
1140
|
-
setVerbForm(data.forms, "pres_pasv_inf", [pres_stem + "ī"]);
|
|
1141
|
-
}
|
|
1142
|
-
|
|
1143
|
-
setVerbForm(data.forms, "pres_actv_ptc", [pres_stem + "iēns"]);
|
|
1144
|
-
this.make_gerund(data, typeinfo, pres_stem + "iend", true, false, nopass);
|
|
1145
|
-
}
|
|
1146
|
-
|
|
1147
|
-
private make_pres_4th(data: ConjugationData, typeinfo: ConjugationInfo, pres_stem: string, nopass = false, noimpr = false) {
|
|
1148
|
-
this.add_forms(data, "pres_actv_indc", pres_stem, "iō", "īs", "it", "īmus", "ītis", "iunt");
|
|
1149
|
-
this.add_forms(data, "impf_actv_indc", pres_stem, "iēbam", "iēbās", "iēbat", "iēbāmus", "iēbātis", "iēbant");
|
|
1150
|
-
this.add_forms(data, "futr_actv_indc", pres_stem, "iam", "iēs", "iet", "iēmus", "iētis", "ient");
|
|
1151
|
-
|
|
1152
|
-
this.add_forms(data, "pres_pasv_indc", pres_stem, "ior", ["īris", "īre"], "ītur", "īmur", "īminī", "iuntur");
|
|
1153
|
-
this.add_forms(data, "impf_pasv_indc", pres_stem, "iēbar", ["iēbāris", "iēbāre"], "iēbātur", "iēbāmur", "iēbāminī", "iēbantur");
|
|
1154
|
-
this.add_forms(data, "futr_pasv_indc", pres_stem, "iar", ["iēris", "iēre"], "iētur", "iēmur", "iēminī", "ientur");
|
|
1155
|
-
|
|
1156
|
-
this.add_forms(data, "pres_actv_subj", pres_stem, "iam", "iās", "iat", "iāmus", "iātis", "iant");
|
|
1157
|
-
this.add_forms(data, "impf_actv_subj", pres_stem, "īrem", "īrēs", "īret", "īrēmus", "īrētis", "īrent");
|
|
1158
|
-
|
|
1159
|
-
this.add_forms(data, "pres_pasv_subj", pres_stem, "iar", ["iāris", "iāre"], "iātur", "iāmur", "iāminī", "iantur");
|
|
1160
|
-
this.add_forms(data, "impf_pasv_subj", pres_stem, "īrer", ["īrēris", "īrēre"], "īrētur", "īrēmur", "īrēminī", "īrentur");
|
|
1161
|
-
|
|
1162
|
-
this.add_2_forms(data, "pres_actv_impr", pres_stem, "ī", "īte");
|
|
1163
|
-
this.add_23_forms(data, "futr_actv_impr", pres_stem, "ītō", "ītō", "ītōte", "iuntō");
|
|
1164
|
-
|
|
1165
|
-
this.add_2_forms(data, "pres_pasv_impr", pres_stem, "īre", "īminī");
|
|
1166
|
-
this.add_23_forms(data, "futr_pasv_impr", pres_stem, "ītor", "ītor", [], "iuntor");
|
|
1167
|
-
|
|
1168
|
-
setVerbForm(data.forms, "pres_actv_inf", [pres_stem + "īre"]);
|
|
1169
|
-
setVerbForm(data.forms, "pres_pasv_inf", [pres_stem + "īrī"]);
|
|
1170
|
-
setVerbForm(data.forms, "pres_actv_ptc", [pres_stem + "iēns"]);
|
|
1171
|
-
|
|
1172
|
-
this.make_gerund(data, typeinfo, pres_stem + "iend", true);
|
|
1173
|
-
}
|
|
1174
|
-
|
|
1175
|
-
private make_perf_and_supine(data: ConjugationData, typeinfo: ConjugationInfo) {
|
|
1176
|
-
if (hasVerbType(typeinfo.subtypes, "optsemidepon")) {
|
|
1177
|
-
this.make_perf(data, typeinfo.perf_stem, "noinf");
|
|
1178
|
-
this.make_deponent_perf(data, typeinfo.supine_stem);
|
|
1179
|
-
} else {
|
|
1180
|
-
this.make_perf(data, typeinfo.perf_stem);
|
|
1181
|
-
this.make_supine(data, typeinfo, typeinfo.supine_stem);
|
|
1182
|
-
}
|
|
1183
|
-
}
|
|
1184
|
-
|
|
1185
|
-
private make_perf(data: ConjugationData, perf_stem: string[], no_inf?: string) {
|
|
1186
|
-
if (!perf_stem.length) {
|
|
1187
|
-
return;
|
|
1188
|
-
}
|
|
1189
|
-
|
|
1190
|
-
const perf3p = ["ērunt"];
|
|
1191
|
-
if (!this.options.suppressPerfectEre) {
|
|
1192
|
-
perf3p.push("ēre");
|
|
1193
|
-
}
|
|
1194
|
-
|
|
1195
|
-
for (const stem of perf_stem) {
|
|
1196
|
-
this.add_forms(data, "perf_actv_indc", stem, "ī", "istī", "it", "imus", "istis", perf3p);
|
|
1197
|
-
this.add_forms(data, "plup_actv_indc", stem, "eram", "erās", "erat", "erāmus", "erātis", "erant");
|
|
1198
|
-
this.add_forms(data, "futp_actv_indc", stem, "erō", "eris", "erit", "erimus", "eritis", "erint");
|
|
1199
|
-
this.add_forms(data, "perf_actv_subj", stem, "erim", "erīs", "erit", "erīmus", "erītis", "erint");
|
|
1200
|
-
this.add_forms(data, "plup_actv_subj", stem, "issem", "issēs", "isset", "issēmus", "issētis", "issent");
|
|
1201
|
-
|
|
1202
|
-
if (!no_inf) {
|
|
1203
|
-
this.add_form(data, "perf_actv_inf", stem, "isse");
|
|
1204
|
-
}
|
|
1205
|
-
}
|
|
1206
|
-
}
|
|
1207
|
-
|
|
1208
|
-
private make_deponent_perf(data: ConjugationData, supine_stem: string[]) {
|
|
1209
|
-
if (!supine_stem.length) {
|
|
1210
|
-
return;
|
|
1211
|
-
}
|
|
1212
|
-
|
|
1213
|
-
for (const stem of supine_stem) {
|
|
1214
|
-
const stems = stem + "us ";
|
|
1215
|
-
const stemp = stem + "ī ";
|
|
1216
|
-
|
|
1217
|
-
this.add_forms(data, "perf_actv_indc", stems, "[[esse|sum]]", "[[esse|es]]", "[[esse|est]]", [], [], []);
|
|
1218
|
-
this.add_forms(data, "perf_actv_indc", stemp, [], [], [], "[[esse|sumus]]", "[[esse|estis]]", "[[esse|sunt]]");
|
|
1219
|
-
|
|
1220
|
-
this.add_forms(data, "plup_actv_indc", stems, "[[esse|eram]]", "[[esse|erās]]", "[[esse|erat]]", [], [], []);
|
|
1221
|
-
this.add_forms(data, "plup_actv_indc", stemp, [], [], [], "erāmus", "erātis", "erant");
|
|
1222
|
-
|
|
1223
|
-
this.add_forms(data, "futp_actv_indc", stems, "[[esse|erō]]", "[[esse|eris]]", "[[esse|erit]]", [], [], []);
|
|
1224
|
-
this.add_forms(data, "futp_actv_indc", stemp, [], [], [], "[[esse|erimus]]", "[[esse|eritis]]", "[[esse|erint]]");
|
|
1225
|
-
|
|
1226
|
-
this.add_forms(data, "perf_actv_subj", stems, "[[esse|sim]]", "[[esse|sīs]]", "[[esse|sit]]", [], [], []);
|
|
1227
|
-
this.add_forms(data, "perf_actv_subj", stemp, [], [], [], "sīmus", "sītis", "sint");
|
|
1228
|
-
|
|
1229
|
-
this.add_forms(data, "plup_actv_subj", stems, "[[esse|essem]]", "[[esse|essēs]]", "[[esse|esset]]", [], [], []);
|
|
1230
|
-
this.add_forms(data, "plup_actv_subj", stemp, [], [], [], "[[esse|essēmus]]", "[[esse|essētis]]", "[[esse|essent]]");
|
|
1231
|
-
|
|
1232
|
-
this.add_form(data, "perf_actv_inf", "", "" + stem + "um [[esse|esse]]");
|
|
1233
|
-
this.add_form(data, "futr_actv_inf", "", "" + stem + "ūrum [[esse|esse]]");
|
|
1234
|
-
this.add_form(data, "perf_actv_ptc", stem, "us");
|
|
1235
|
-
this.add_form(data, "futr_actv_ptc", stem, "ūrus");
|
|
1236
|
-
|
|
1237
|
-
this.add_form(data, "sup_acc", stem, "um");
|
|
1238
|
-
this.add_form(data, "sup_abl", stem, "ū");
|
|
1239
|
-
}
|
|
1240
|
-
}
|
|
1241
|
-
|
|
1242
|
-
private make_supine(data: ConjugationData, typeinfo: ConjugationInfo, supine_stem: string[]) {
|
|
1243
|
-
if (!supine_stem.length) {
|
|
1244
|
-
return;
|
|
1245
|
-
}
|
|
1246
|
-
|
|
1247
|
-
for (const stem of supine_stem) {
|
|
1248
|
-
let perf_pasv_ptc_lemma = "";
|
|
1249
|
-
let perf_pasv_ptc;
|
|
1250
|
-
let perf_pasv_ptc_acc;
|
|
1251
|
-
let futr_actv_ptc = stem + "ūrus";
|
|
1252
|
-
if (hasVerbType(typeinfo.subtypes, "passimpers")) {
|
|
1253
|
-
perf_pasv_ptc_lemma = stem + "um";
|
|
1254
|
-
perf_pasv_ptc = perf_pasv_ptc_lemma;
|
|
1255
|
-
perf_pasv_ptc_acc = perf_pasv_ptc_lemma;
|
|
1256
|
-
} else {
|
|
1257
|
-
perf_pasv_ptc_lemma = stem + "us";
|
|
1258
|
-
if (hasVerbType(typeinfo.subtypes, "mp")) {
|
|
1259
|
-
perf_pasv_ptc = stem + "ī";
|
|
1260
|
-
perf_pasv_ptc_acc = stem + "ōs";
|
|
1261
|
-
} else if (hasVerbType(typeinfo.subtypes, "fp")) {
|
|
1262
|
-
perf_pasv_ptc = stem + "ae";
|
|
1263
|
-
perf_pasv_ptc_acc = stem + "ās";
|
|
1264
|
-
} else if (hasVerbType(typeinfo.subtypes, "np")) {
|
|
1265
|
-
perf_pasv_ptc = stem + "a";
|
|
1266
|
-
perf_pasv_ptc_acc = perf_pasv_ptc;
|
|
1267
|
-
} else if (hasVerbType(typeinfo.subtypes, "f")) {
|
|
1268
|
-
perf_pasv_ptc = stem + "a";
|
|
1269
|
-
perf_pasv_ptc_acc = stem + "am";
|
|
1270
|
-
} else if (hasVerbType(typeinfo.subtypes, "n")) {
|
|
1271
|
-
perf_pasv_ptc = stem + "um";
|
|
1272
|
-
perf_pasv_ptc_acc = perf_pasv_ptc;
|
|
1273
|
-
} else {
|
|
1274
|
-
perf_pasv_ptc = perf_pasv_ptc_lemma;
|
|
1275
|
-
perf_pasv_ptc_acc = stem + "um";
|
|
1276
|
-
}
|
|
1277
|
-
}
|
|
1278
|
-
|
|
1279
|
-
let perf_pasv_inf;
|
|
1280
|
-
if (perf_pasv_ptc_acc != perf_pasv_ptc_lemma) {
|
|
1281
|
-
perf_pasv_inf = perf_pasv_ptc_acc;
|
|
1282
|
-
} else {
|
|
1283
|
-
perf_pasv_inf = perf_pasv_ptc_lemma;
|
|
1284
|
-
}
|
|
1285
|
-
perf_pasv_inf += " [[esse|esse]]";
|
|
1286
|
-
const futr_pasv_inf = stem + "um" + " [[īre|īrī]]";
|
|
1287
|
-
|
|
1288
|
-
const mortu = [
|
|
1289
|
-
"conmortu",
|
|
1290
|
-
"commortu",
|
|
1291
|
-
"dēmortu",
|
|
1292
|
-
"ēmortu",
|
|
1293
|
-
"inmortu",
|
|
1294
|
-
"immortu",
|
|
1295
|
-
"inēmortu",
|
|
1296
|
-
"intermortu",
|
|
1297
|
-
"permortu",
|
|
1298
|
-
"praemortu",
|
|
1299
|
-
"superēmortu",
|
|
1300
|
-
];
|
|
1301
|
-
const ort = [
|
|
1302
|
-
"ort",
|
|
1303
|
-
"abort",
|
|
1304
|
-
"adort",
|
|
1305
|
-
"coort",
|
|
1306
|
-
"exort",
|
|
1307
|
-
"hort",
|
|
1308
|
-
"obort"
|
|
1309
|
-
];
|
|
1310
|
-
|
|
1311
|
-
let futr_actv_inf: string | undefined;
|
|
1312
|
-
if (mortu.includes(stem)) {
|
|
1313
|
-
futr_actv_ptc = stem.replace(/mortu$/, "moritūrus");
|
|
1314
|
-
} else if (ort.includes(stem)) {
|
|
1315
|
-
futr_actv_ptc = stem.replace(/ort$/, "oritūrus");
|
|
1316
|
-
} else if (stem == "mortu") {
|
|
1317
|
-
futr_actv_inf = "";
|
|
1318
|
-
futr_actv_ptc = "moritūrus";
|
|
1319
|
-
}
|
|
1320
|
-
|
|
1321
|
-
if (futr_actv_inf === undefined) {
|
|
1322
|
-
futr_actv_inf = futr_actv_ptc.replace(/us$/, "um") + " [[esse|esse]]";
|
|
1323
|
-
}
|
|
1324
|
-
this.add_form(data, "futr_actv_inf", "", futr_actv_inf);
|
|
1325
|
-
this.add_form(data, "perf_pasv_inf", "", perf_pasv_inf);
|
|
1326
|
-
this.add_form(data, "futr_pasv_inf", "", futr_pasv_inf);
|
|
1327
|
-
this.add_form(data, "futr_actv_ptc", "", futr_actv_ptc);
|
|
1328
|
-
this.add_form(data, "perf_pasv_ptc", "", perf_pasv_ptc);
|
|
1329
|
-
|
|
1330
|
-
this.add_form(data, "sup_acc", stem, "um");
|
|
1331
|
-
this.add_form(data, "sup_abl", stem, "ū");
|
|
1332
|
-
}
|
|
1333
|
-
}
|
|
1334
|
-
|
|
1335
|
-
private make_gerund(data: ConjugationData, typeinfo: ConjugationInfo, base: string, und_variant = false, no_gerund = false, no_futr_pasv_ptc = false) {
|
|
1336
|
-
interface Endings {
|
|
1337
|
-
nom: string;
|
|
1338
|
-
gen: string;
|
|
1339
|
-
dat: string;
|
|
1340
|
-
acc: string;
|
|
1341
|
-
abl: string;
|
|
1342
|
-
}
|
|
1343
|
-
|
|
1344
|
-
const neut_endings: Endings = {
|
|
1345
|
-
nom: "um",
|
|
1346
|
-
gen: "ī",
|
|
1347
|
-
dat: "ō",
|
|
1348
|
-
acc: "um",
|
|
1349
|
-
abl: "ō",
|
|
1350
|
-
};
|
|
1351
|
-
|
|
1352
|
-
let endings: Endings;
|
|
1353
|
-
if (hasVerbType(typeinfo.subtypes, "f")) {
|
|
1354
|
-
endings = {
|
|
1355
|
-
nom: "a",
|
|
1356
|
-
gen: "ae",
|
|
1357
|
-
dat: "ae",
|
|
1358
|
-
acc: "am",
|
|
1359
|
-
abl: "ā",
|
|
1360
|
-
};
|
|
1361
|
-
} else if (hasVerbType(typeinfo.subtypes, "n")) {
|
|
1362
|
-
endings = neut_endings;
|
|
1363
|
-
} else if (hasVerbType(typeinfo.subtypes, "mp")) {
|
|
1364
|
-
endings = {
|
|
1365
|
-
nom: "ī",
|
|
1366
|
-
gen: "ōrum",
|
|
1367
|
-
dat: "īs",
|
|
1368
|
-
acc: "ōs",
|
|
1369
|
-
abl: "īs",
|
|
1370
|
-
};
|
|
1371
|
-
} else if (hasVerbType(typeinfo.subtypes, "fp")) {
|
|
1372
|
-
endings = {
|
|
1373
|
-
nom: "ae",
|
|
1374
|
-
gen: "ārum",
|
|
1375
|
-
dat: "īs",
|
|
1376
|
-
acc: "ās",
|
|
1377
|
-
abl: "īs",
|
|
1378
|
-
};
|
|
1379
|
-
} else if (hasVerbType(typeinfo.subtypes, "np")) {
|
|
1380
|
-
endings = {
|
|
1381
|
-
nom: "a",
|
|
1382
|
-
gen: "ōrum",
|
|
1383
|
-
dat: "īs",
|
|
1384
|
-
acc: "a",
|
|
1385
|
-
abl: "īs",
|
|
1386
|
-
};
|
|
1387
|
-
} else {
|
|
1388
|
-
endings = {
|
|
1389
|
-
nom: "us",
|
|
1390
|
-
gen: "ī",
|
|
1391
|
-
dat: "ō",
|
|
1392
|
-
acc: "um",
|
|
1393
|
-
abl: "ō",
|
|
1394
|
-
};
|
|
1395
|
-
}
|
|
1396
|
-
|
|
1397
|
-
const endingMap = new Map<string, string>();
|
|
1398
|
-
endingMap.set("nom", endings.nom);
|
|
1399
|
-
endingMap.set("gen", endings.gen);
|
|
1400
|
-
endingMap.set("dat", endings.dat);
|
|
1401
|
-
endingMap.set("acc", endings.acc);
|
|
1402
|
-
endingMap.set("abl", endings.abl);
|
|
1403
|
-
|
|
1404
|
-
if (base.match(/[uv]end$/) || hasVerbType(typeinfo.subtypes, "nound")) {
|
|
1405
|
-
und_variant = false;
|
|
1406
|
-
}
|
|
1407
|
-
|
|
1408
|
-
if (this.options.suppressUndVariants) {
|
|
1409
|
-
und_variant = false;
|
|
1410
|
-
}
|
|
1411
|
-
|
|
1412
|
-
let und_base = "";
|
|
1413
|
-
if (und_variant) {
|
|
1414
|
-
und_base = base.replace(/end$/, "und");
|
|
1415
|
-
}
|
|
1416
|
-
for (let [cas, ending] of endingMap) {
|
|
1417
|
-
if (cas == "nom") {
|
|
1418
|
-
if (!no_futr_pasv_ptc) {
|
|
1419
|
-
if (hasVerbType(typeinfo.subtypes, "passimpers")) {
|
|
1420
|
-
ending = "um";
|
|
1421
|
-
}
|
|
1422
|
-
this.add_form(data, "futr_pasv_ptc", "", base + ending);
|
|
1423
|
-
if (und_base) {
|
|
1424
|
-
this.add_form(data, "futr_pasv_ptc", "", und_base + ending);
|
|
1425
|
-
}
|
|
1426
|
-
}
|
|
1427
|
-
} else if (data.presuf.get(cas + "_prefix" as VerbAffix) || data.presuf.get(cas + "_suffix" as VerbAffix) && !no_gerund) {
|
|
1428
|
-
this.add_form(data, "ger_" + cas, "", (data.presuf.get(cas + "_prefix" as VerbAffix) || "") + base + ending + (data.presuf.get(cas + "_suffix" as VerbAffix) || ""));
|
|
1429
|
-
if (und_base) {
|
|
1430
|
-
this.add_form(data, "ger_" + cas, "", (data.presuf.get(cas + "_prefix" as VerbAffix) || "") + und_base + ending + (data.presuf.get(cas + "_suffix" as VerbAffix) || ""));
|
|
1431
|
-
}
|
|
1432
|
-
}
|
|
1433
|
-
}
|
|
1434
|
-
|
|
1435
|
-
endingMap.set("nom", neut_endings.nom);
|
|
1436
|
-
endingMap.set("gen", neut_endings.gen);
|
|
1437
|
-
endingMap.set("dat", neut_endings.dat);
|
|
1438
|
-
endingMap.set("acc", neut_endings.acc);
|
|
1439
|
-
endingMap.set("abl", neut_endings.abl);
|
|
1440
|
-
|
|
1441
|
-
if (!no_gerund) {
|
|
1442
|
-
for (const [cas, ending] of endingMap) {
|
|
1443
|
-
this.add_form(data, "ger_" + cas, "", (data.presuf.get("prefix" as VerbAffix) || "") + base + ending + (data.presuf.get("suffix" as VerbAffix) || ""));
|
|
1444
|
-
}
|
|
1445
|
-
}
|
|
1446
|
-
}
|
|
1447
|
-
|
|
1448
|
-
private has_perf_in_s_or_x(pres_stem: string, perf_stem: string): boolean {
|
|
1449
|
-
if (pres_stem == perf_stem) {
|
|
1450
|
-
return false;
|
|
1451
|
-
}
|
|
1452
|
-
|
|
1453
|
-
return (perf_stem != "") && (perf_stem.match(/[sx]$/) != null);
|
|
1454
|
-
}
|
|
1455
|
-
|
|
1456
|
-
private form_contains(forms: string[] | undefined, form: string) {
|
|
1457
|
-
if (!forms) {
|
|
1458
|
-
return false;
|
|
1459
|
-
}
|
|
1460
|
-
return forms.includes(form);
|
|
1461
|
-
}
|
|
1462
|
-
|
|
1463
|
-
private ivi_ive(str: string): string {
|
|
1464
|
-
let form = str.replace(/īvī/g, "iī");
|
|
1465
|
-
form = form.replace(/īvi/g, "ī");
|
|
1466
|
-
form = form.replace(/īve/g, "ī");
|
|
1467
|
-
form = form.replace(/īvē/g, "ē");
|
|
1468
|
-
return form;
|
|
1469
|
-
}
|
|
1470
|
-
|
|
1471
|
-
private postprocess(data: ConjugationData, typeinfo: ConjugationInfo) {
|
|
1472
|
-
if (hasVerbType(typeinfo.subtypes, "nosup")) {
|
|
1473
|
-
this.insert_if_not(data.categories, "Latin verbs with missing supine stem");
|
|
1474
|
-
this.insert_if_not(data.categories, "Latin defective verbs");
|
|
1475
|
-
|
|
1476
|
-
for (const key of data.forms.keys()) {
|
|
1477
|
-
if (key.match("sup") || (key == "perf_actv_ptc" || key == "perf_pasv_ptc" || key == "perf_pasv_inf" ||
|
|
1478
|
-
key == "futr_actv_ptc" || key == "futr_actv_inf" || key == "futr_pasv_inf" ||
|
|
1479
|
-
((hasVerbType(typeinfo.subtypes, "depon") || hasVerbType(typeinfo.subtypes, "semidepon") || hasVerbType(typeinfo.subtypes, "optsemidepon")) && key == "perf_actv_inf")))
|
|
1480
|
-
{
|
|
1481
|
-
setVerbForm(data.forms, key, []);
|
|
1482
|
-
}
|
|
1483
|
-
}
|
|
1484
|
-
} else if (hasVerbType(typeinfo.subtypes, "supfutractvonly")) {
|
|
1485
|
-
this.insert_if_not(data.categories, "Latin verbs with missing supine stem except in the future active participle");
|
|
1486
|
-
this.insert_if_not(data.categories, "Latin defective verbs");
|
|
1487
|
-
for (const key of data.forms.keys()) {
|
|
1488
|
-
if (key.match("sup") || key == "perf_actv_ptc" || key == "perf_pasv_ptc" || key == "perf_pasv_inf" || key == "futr_pasv_inf") {
|
|
1489
|
-
setVerbForm(data.forms, key, []);
|
|
1490
|
-
}
|
|
1491
|
-
}
|
|
1492
|
-
}
|
|
1493
|
-
|
|
1494
|
-
const perf_pasv_ptc = getVerbForm(data.forms, "perf_pasv_ptc");
|
|
1495
|
-
if (perf_pasv_ptc && !LaVerb.form_is_empty(perf_pasv_ptc)) {
|
|
1496
|
-
if (hasVerbType(typeinfo.subtypes, "passimpers")) {
|
|
1497
|
-
for (const ppp of perf_pasv_ptc) {
|
|
1498
|
-
if (!LaVerb.form_is_empty([ppp])) {
|
|
1499
|
-
this.add_form(data, "3s_perf_pasv_indc", ppp, " [[esse|est]]");
|
|
1500
|
-
this.add_form(data, "3s_futp_pasv_indc", ppp, " [[esse|erit]]");
|
|
1501
|
-
this.add_form(data, "3s_plup_pasv_indc", ppp, " [[esse|erat]]");
|
|
1502
|
-
this.add_form(data, "3s_perf_pasv_subj", ppp, " [[esse|sit]]");
|
|
1503
|
-
this.add_form(data, "3s_plup_pasv_subj", ppp, [" [[esse|esset]]", " [[esse|foret]]"]);
|
|
1504
|
-
}
|
|
1505
|
-
}
|
|
1506
|
-
} else if (hasVerbType(typeinfo.subtypes, "pass3only")) {
|
|
1507
|
-
for (const ppp of perf_pasv_ptc) {
|
|
1508
|
-
if (!LaVerb.form_is_empty([ppp])) {
|
|
1509
|
-
let ppp_s = "";
|
|
1510
|
-
let ppp_p = "";
|
|
1511
|
-
if (hasVerbType(typeinfo.subtypes, "mp")) {
|
|
1512
|
-
ppp_p = ppp;
|
|
1513
|
-
} else if (hasVerbType(typeinfo.subtypes, "fp")) {
|
|
1514
|
-
ppp_p = ppp;
|
|
1515
|
-
} else if (hasVerbType(typeinfo.subtypes, "np")) {
|
|
1516
|
-
ppp_p = ppp;
|
|
1517
|
-
} else if (hasVerbType(typeinfo.subtypes, "f")) {
|
|
1518
|
-
ppp_s = ppp;
|
|
1519
|
-
ppp_p = ppp.replace(/a$/, "ae");
|
|
1520
|
-
} else if (hasVerbType(typeinfo.subtypes, "n")) {
|
|
1521
|
-
ppp_s = ppp;
|
|
1522
|
-
ppp_p = ppp.replace(/um$/, "a");
|
|
1523
|
-
} else {
|
|
1524
|
-
ppp_s = ppp;
|
|
1525
|
-
ppp_p = ppp.replace(/us$/, "ī");
|
|
1526
|
-
}
|
|
1527
|
-
|
|
1528
|
-
if (!hasVerbType(typeinfo.subtypes, "mp") && !hasVerbType(typeinfo.subtypes, "fp") && !hasVerbType(typeinfo.subtypes, "np")) {
|
|
1529
|
-
this.add_form(data, "3s_perf_pasv_indc", ppp_s, " [[esse|est]]");
|
|
1530
|
-
this.add_form(data, "3s_futp_pasv_indc", ppp_s, " [[esse|erit]]");
|
|
1531
|
-
this.add_form(data, "3s_plup_pasv_indc", ppp_s, " [[esse|erat]]");
|
|
1532
|
-
this.add_form(data, "3s_perf_pasv_subj", ppp_s, " [[esse|sit]]");
|
|
1533
|
-
this.add_form(data, "3s_plup_pasv_subj", ppp_s, [" [[esse|esset]]", " [[esse|foret]]"]);
|
|
1534
|
-
}
|
|
1535
|
-
this.add_form(data, "3p_perf_pasv_indc", ppp_p, " [[esse|sunt]]");
|
|
1536
|
-
this.add_form(data, "3p_futp_pasv_indc", ppp_p, " [[esse|erunt]]");
|
|
1537
|
-
this.add_form(data, "3p_plup_pasv_indc", ppp_p, " [[esse|erant]]");
|
|
1538
|
-
this.add_form(data, "3p_perf_pasv_subj", ppp_p, " [[esse|sint]]");
|
|
1539
|
-
this.add_form(data, "3p_plup_pasv_subj", ppp_p, [" [[esse|essent]]", " [[esse|forent]]"]);
|
|
1540
|
-
}
|
|
1541
|
-
}
|
|
1542
|
-
} else {
|
|
1543
|
-
this.make_perfect_passive(data);
|
|
1544
|
-
}
|
|
1545
|
-
}
|
|
1546
|
-
|
|
1547
|
-
if (hasVerbType(typeinfo.subtypes, "perfaspres")) {
|
|
1548
|
-
this.insert_if_not(data.categories, "Latin defective verbs");
|
|
1549
|
-
this.insert_if_not(data.categories, "Latin active-only verbs");
|
|
1550
|
-
this.insert_if_not(data.categories, "Latin verbs with missing present stem");
|
|
1551
|
-
this.insert_if_not(data.categories, "Latin verbs with perfect forms having imperfective meanings");
|
|
1552
|
-
|
|
1553
|
-
setVerbForm(data.forms, "perf_actv_ptc", getVerbForm(data.forms, "perf_pasv_ptc") || []);
|
|
1554
|
-
setVerbForm(data.forms, "pres_actv_inf", getVerbForm(data.forms, "perf_actv_inf") || []);
|
|
1555
|
-
|
|
1556
|
-
for (const key of data.forms.keys()) {
|
|
1557
|
-
if (key != "futr_actv_inf" && key != "futr_actv_ptc") {
|
|
1558
|
-
if (key.match(/pasv/) || (key.match(/pres/) && key != "pres_actv_inf") || key.match(/impf/) || key.match(/futr/)) {
|
|
1559
|
-
setVerbForm(data.forms, key, []);
|
|
1560
|
-
}
|
|
1561
|
-
}
|
|
1562
|
-
}
|
|
1563
|
-
|
|
1564
|
-
for (const [key, form] of data.forms) {
|
|
1565
|
-
if (key.match(/perf/) && key != "perf_actv_ptc") {
|
|
1566
|
-
setVerbForm(data.forms, key.replace(/perf/, "pres"), form);
|
|
1567
|
-
setVerbForm(data.forms, key, []);
|
|
1568
|
-
} else if (key.match(/plup/)) {
|
|
1569
|
-
setVerbForm(data.forms, key.replace(/plup/, "impf"), form);
|
|
1570
|
-
setVerbForm(data.forms, key, []);
|
|
1571
|
-
} else if (key.match(/futp/)) {
|
|
1572
|
-
setVerbForm(data.forms, key.replace(/futp/, "futr"), form);
|
|
1573
|
-
setVerbForm(data.forms, key, []);
|
|
1574
|
-
} else if (key.match(/ger/)) {
|
|
1575
|
-
setVerbForm(data.forms, key, []);
|
|
1576
|
-
}
|
|
1577
|
-
}
|
|
1578
|
-
|
|
1579
|
-
setVerbForm(data.forms, "pres_actv_ptc", []);
|
|
1580
|
-
}
|
|
1581
|
-
|
|
1582
|
-
if (hasVerbType(typeinfo.subtypes, "impers")) {
|
|
1583
|
-
this.insert_if_not(data.categories, "Latin impersonal verbs");
|
|
1584
|
-
|
|
1585
|
-
for (const key of data.forms.keys()) {
|
|
1586
|
-
if (key.match(/^[12][sp]/) || key.match(/^3p/)) {
|
|
1587
|
-
setVerbForm(data.forms, key, []);
|
|
1588
|
-
}
|
|
1589
|
-
}
|
|
1590
|
-
} else if (hasVerbType(typeinfo.subtypes, "3only")) {
|
|
1591
|
-
this.insert_if_not(data.categories, "Latin third-person-only verbs");
|
|
1592
|
-
|
|
1593
|
-
for (const key of data.forms.keys()) {
|
|
1594
|
-
if (key.match(/^[12][sp]/)) {
|
|
1595
|
-
setVerbForm(data.forms, key, []);
|
|
1596
|
-
}
|
|
1597
|
-
}
|
|
1598
|
-
}
|
|
1599
|
-
|
|
1600
|
-
if (hasVerbType(typeinfo.subtypes, "nopasvperf") && !hasVerbType(typeinfo.subtypes, "nosup") && !hasVerbType(typeinfo.subtypes, "supfutractvonly")) {
|
|
1601
|
-
this.insert_if_not(data.categories, "Latin defective verbs");
|
|
1602
|
-
|
|
1603
|
-
for (const key of data.forms.keys()) {
|
|
1604
|
-
if (key.match(/pasv/) && (key.match(/perf/) || key.match(/plup/) || key.match(/futp/))) {
|
|
1605
|
-
setVerbForm(data.forms, key, []);
|
|
1606
|
-
}
|
|
1607
|
-
}
|
|
1608
|
-
}
|
|
1609
|
-
|
|
1610
|
-
if (hasVerbType(typeinfo.subtypes, "optsemidepon")) {
|
|
1611
|
-
this.insert_if_not(data.categories, "Latin semi-deponent verbs");
|
|
1612
|
-
this.insert_if_not(data.categories, "Latin optionally semi-deponent verbs");
|
|
1613
|
-
|
|
1614
|
-
for (const key of data.forms.keys()) {
|
|
1615
|
-
if (key.match(/pres_pasv/) || key.match(/impf_pasv/) || key.match(/futr_pasv/)) {
|
|
1616
|
-
setVerbForm(data.forms, key, []);
|
|
1617
|
-
}
|
|
1618
|
-
}
|
|
1619
|
-
} else if (hasVerbType(typeinfo.subtypes, "semidepon")) {
|
|
1620
|
-
this.insert_if_not(data.categories, "Latin semi-deponent verbs");
|
|
1621
|
-
|
|
1622
|
-
if (typeinfo.perf_stem.length != 0) { // added by @fpw for reverti
|
|
1623
|
-
for (const [key, form] of data.forms) {
|
|
1624
|
-
if (key.match(/pres_pasv/) || key.match(/impf_pasv/) || key.match(/futr_pasv/) && key != "futr_pasv_ptc" && key != "futr_pasv_inf" && key != "pres_pasv_ptc") {
|
|
1625
|
-
setVerbForm(data.forms, key.replace(/pasv/, "actv"), form);
|
|
1626
|
-
setVerbForm(data.forms, key, []);
|
|
1627
|
-
} else if (key.match(/sup_/)) {
|
|
1628
|
-
setVerbForm(data.forms, key, []);
|
|
1629
|
-
}
|
|
1630
|
-
}
|
|
1631
|
-
} else {
|
|
1632
|
-
for (const key of data.forms.keys()) {
|
|
1633
|
-
if (key.match(/perf_actv/) || key.match(/plup_actv/) || key.match(/futp_actv/) || key.match(/pres_pasv/) || key.match(/impf_pasv/) || key.match(/futr_pasv/)) {
|
|
1634
|
-
setVerbForm(data.forms, key, []);
|
|
1635
|
-
}
|
|
1636
|
-
}
|
|
1637
|
-
|
|
1638
|
-
for (const [key, form] of data.forms) {
|
|
1639
|
-
if (key.match(/perf_pasv/) || key.match(/plup_pasv/) || key.match(/futp_pasv/)) {
|
|
1640
|
-
setVerbForm(data.forms, key.replace(/pasv/, "actv"), form);
|
|
1641
|
-
setVerbForm(data.forms, key, []);
|
|
1642
|
-
}
|
|
1643
|
-
}
|
|
1644
|
-
}
|
|
1645
|
-
} else if (hasVerbType(typeinfo.subtypes, "depon")) {
|
|
1646
|
-
this.insert_if_not(data.categories, "Latin deponent verbs");
|
|
1647
|
-
|
|
1648
|
-
for (const key of data.forms.keys()) {
|
|
1649
|
-
if ((key.match(/actv/) && key != "pres_actv_ptc" && key != "futr_actv_ptc" && key != "futr_actv_inf") || key == "futr_pasv_inf") {
|
|
1650
|
-
setVerbForm(data.forms, key, []);
|
|
1651
|
-
}
|
|
1652
|
-
}
|
|
1653
|
-
|
|
1654
|
-
for (const [key, form] of data.forms) {
|
|
1655
|
-
if (key.match(/pasv/) && key != "pres_pasv_ptc" && key != "futr_pasv_ptc" && key != "futr_pasv_inf") {
|
|
1656
|
-
setVerbForm(data.forms, key.replace(/pasv/, "actv"), form);
|
|
1657
|
-
setVerbForm(data.forms, key, []);
|
|
1658
|
-
}
|
|
1659
|
-
}
|
|
1660
|
-
}
|
|
1661
|
-
|
|
1662
|
-
if (hasVerbType(typeinfo.subtypes, "noperf")) {
|
|
1663
|
-
this.insert_if_not(data.categories, "Latin verbs with missing perfect stem");
|
|
1664
|
-
this.insert_if_not(data.categories, "Latin defective verbs");
|
|
1665
|
-
|
|
1666
|
-
for (const key of data.forms.keys()) {
|
|
1667
|
-
if (key.match(/actv/) && (key.match(/perf/) || key.match(/plup/) || key.match(/futp/))) {
|
|
1668
|
-
setVerbForm(data.forms, key, []);
|
|
1669
|
-
}
|
|
1670
|
-
}
|
|
1671
|
-
}
|
|
1672
|
-
|
|
1673
|
-
if (hasVerbType(typeinfo.subtypes, "nopass")) {
|
|
1674
|
-
this.insert_if_not(data.categories, "Latin active-only verbs");
|
|
1675
|
-
|
|
1676
|
-
for (const key of data.forms.keys()) {
|
|
1677
|
-
if (key.match(/pasv/)) {
|
|
1678
|
-
setVerbForm(data.forms, key, []);
|
|
1679
|
-
}
|
|
1680
|
-
}
|
|
1681
|
-
} else if (hasVerbType(typeinfo.subtypes, "pass3only")) {
|
|
1682
|
-
this.insert_if_not(data.categories, "Latin verbs with third-person passive");
|
|
1683
|
-
|
|
1684
|
-
for (const key of data.forms.keys()) {
|
|
1685
|
-
if (key.match(/pasv/) && (key.match(/^[12][sp]/) || key.match(/impr/))) {
|
|
1686
|
-
setVerbForm(data.forms, key, []);
|
|
1687
|
-
}
|
|
1688
|
-
|
|
1689
|
-
if (hasVerbType(typeinfo.subtypes, "mp") || hasVerbType(typeinfo.subtypes, "fp") || hasVerbType(typeinfo.subtypes, "np")) {
|
|
1690
|
-
if (key.match(/pasv/) && key.match(/^3s/)) {
|
|
1691
|
-
setVerbForm(data.forms, key, []);
|
|
1692
|
-
}
|
|
1693
|
-
}
|
|
1694
|
-
}
|
|
1695
|
-
} else if (hasVerbType(typeinfo.subtypes, "passimpers")) {
|
|
1696
|
-
this.insert_if_not(data.categories, "Latin verbs with impersonal passive");
|
|
1697
|
-
|
|
1698
|
-
for (const key of data.forms.keys()) {
|
|
1699
|
-
if (key.match(/pasv/) && (key.match(/^[12][sp]/) || key.match(/^3p/) || key.match(/impr/)) || key == "futr_pasv_inf") {
|
|
1700
|
-
setVerbForm(data.forms, key, []);
|
|
1701
|
-
}
|
|
1702
|
-
}
|
|
1703
|
-
}
|
|
1704
|
-
|
|
1705
|
-
if (hasVerbType(typeinfo.subtypes, "noimp")) {
|
|
1706
|
-
this.insert_if_not(data.categories, "Latin verbs with missing imperative");
|
|
1707
|
-
this.insert_if_not(data.categories, "Latin defective verbs");
|
|
1708
|
-
|
|
1709
|
-
for (const key of data.forms.keys()) {
|
|
1710
|
-
if (key.match(/impr/)) {
|
|
1711
|
-
setVerbForm(data.forms, key, []);
|
|
1712
|
-
}
|
|
1713
|
-
}
|
|
1714
|
-
}
|
|
1715
|
-
|
|
1716
|
-
if (hasVerbType(typeinfo.subtypes, "nofut")) {
|
|
1717
|
-
this.insert_if_not(data.categories, "Latin verbs with missing future");
|
|
1718
|
-
this.insert_if_not(data.categories, "Latin defective verbs");
|
|
1719
|
-
|
|
1720
|
-
for (const key of data.forms.keys()) {
|
|
1721
|
-
if (key.match(/fut/)) {
|
|
1722
|
-
setVerbForm(data.forms, key, []);
|
|
1723
|
-
}
|
|
1724
|
-
}
|
|
1725
|
-
}
|
|
1726
|
-
|
|
1727
|
-
if (hasVerbType(typeinfo.subtypes, "p3inf") && !this.options.suppressPoet) {
|
|
1728
|
-
const is_depon = hasVerbType(typeinfo.subtypes, "depon");
|
|
1729
|
-
const form = "pres_" + (is_depon ? "actv" : "pasv") + "_inf";
|
|
1730
|
-
const formval = getVerbForm(data.forms, form) || [];
|
|
1731
|
-
const newvals = [...formval];
|
|
1732
|
-
for (const fv of formval) {
|
|
1733
|
-
newvals.push(fv.replace(/^(.*).$/, "$1" + "ier"));
|
|
1734
|
-
}
|
|
1735
|
-
setVerbForm(data.forms, form, newvals);
|
|
1736
|
-
data.footnotes.set(form, ["The present passive infinitive in -ier is a rare poetic form which is attested."]);
|
|
1737
|
-
}
|
|
1738
|
-
|
|
1739
|
-
if (hasVerbType(typeinfo.subtypes, "poetsyncperf") && !this.options.suppressPoet) {
|
|
1740
|
-
const sss: [string, string][] = [
|
|
1741
|
-
// infinitive
|
|
1742
|
-
["perf_actv_inf", "sse"],
|
|
1743
|
-
// perfect actives
|
|
1744
|
-
["2s_perf_actv_indc", "stī"],
|
|
1745
|
-
["3s_perf_actv_indc", "t"],
|
|
1746
|
-
["1p_perf_actv_indc", "mus"],
|
|
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
|
|
1771
|
-
["1s_plup_actv_subj", "ssem"],
|
|
1772
|
-
["2s_plup_actv_subj", "ssēs"],
|
|
1773
|
-
["3s_plup_actv_subj", "sset"],
|
|
1774
|
-
["1p_plup_actv_subj", "ssēmus"],
|
|
1775
|
-
["2p_plup_actv_subj", "ssētis"],
|
|
1776
|
-
["3p_plup_actv_subj", "ssent"]
|
|
1777
|
-
];
|
|
1778
|
-
|
|
1779
|
-
const add_sync_perf = (form: string, suff_sync: string) => {
|
|
1780
|
-
const formval = getVerbForm(data.forms, form) || [];
|
|
1781
|
-
for (const fv of formval) {
|
|
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;
|
|
1788
|
-
this.insert_if_not(formval, rep);
|
|
1789
|
-
}
|
|
1790
|
-
}
|
|
1791
|
-
data.footnotes.set(form, ["At least one rare poetic syncopated perfect form is attested."]);
|
|
1792
|
-
};
|
|
1793
|
-
for (const [key, val] of sss) {
|
|
1794
|
-
add_sync_perf(key, val);
|
|
1795
|
-
}
|
|
1796
|
-
}
|
|
1797
|
-
}
|
|
1798
|
-
|
|
1799
|
-
private suppress(data: ConjugationData) {
|
|
1800
|
-
if (this.options.suppressPassiveRe) {
|
|
1801
|
-
for (const slot of this.iter_slots(true, true)) {
|
|
1802
|
-
if (slot.match(/^2s_/) && slot.match(/pasv/)) {
|
|
1803
|
-
const forms = getVerbForm(data.forms, slot);
|
|
1804
|
-
if (!forms) {
|
|
1805
|
-
continue;
|
|
1806
|
-
}
|
|
1807
|
-
const newForms: string[] = [];
|
|
1808
|
-
for (const form of forms) {
|
|
1809
|
-
if (!form.match(/re$/) || forms.length == 1) {
|
|
1810
|
-
newForms.push(form);
|
|
1811
|
-
}
|
|
1812
|
-
}
|
|
1813
|
-
setVerbForm(data.forms, slot, newForms);
|
|
1814
|
-
}
|
|
1815
|
-
}
|
|
1816
|
-
}
|
|
1817
|
-
}
|
|
1818
|
-
|
|
1819
|
-
private static form_is_empty(forms: string[] | undefined): boolean {
|
|
1820
|
-
if (!forms) {
|
|
1821
|
-
return true;
|
|
1822
|
-
}
|
|
1823
|
-
|
|
1824
|
-
const allEmpty = forms.every(form => {
|
|
1825
|
-
return form == "" || form == "-" || form == "—" || form == "—";
|
|
1826
|
-
});
|
|
1827
|
-
|
|
1828
|
-
return allEmpty;
|
|
1829
|
-
}
|
|
1830
|
-
|
|
1831
|
-
private make_perfect_passive(data: ConjugationData) {
|
|
1832
|
-
let ppp: string[] | undefined = getVerbForm(data.forms, "perf_pasv_ptc") || [];
|
|
1833
|
-
const ppplinks: string[] = [];
|
|
1834
|
-
for (const pppform of ppp) {
|
|
1835
|
-
ppplinks.push(`[[${pppform}]]`);
|
|
1836
|
-
}
|
|
1837
|
-
|
|
1838
|
-
let ppplink = ppplinks.join(" or ");
|
|
1839
|
-
const sumlink = "[[sum]]";
|
|
1840
|
-
|
|
1841
|
-
const text_for_slot = new Map<string, string>([
|
|
1842
|
-
["perf_pasv_indc", "present active indicative"],
|
|
1843
|
-
["futp_pasv_indc", "future active indicative"],
|
|
1844
|
-
["plup_pasv_indc", "imperfect active indicative"],
|
|
1845
|
-
["perf_pasv_subj", "present active subjunctive"],
|
|
1846
|
-
["plup_pasv_subj", "imperfect active subjunctive"],
|
|
1847
|
-
]);
|
|
1848
|
-
|
|
1849
|
-
const passivePrefix = data.presuf.get(VerbAffix.PassivePrefix);
|
|
1850
|
-
const passiveSuffix = data.presuf.get(VerbAffix.PassiveSuffix);
|
|
1851
|
-
|
|
1852
|
-
let prefix_joiner = "";
|
|
1853
|
-
let suffix_joiner = "";
|
|
1854
|
-
if (passivePrefix && passivePrefix.endsWith(" ")) {
|
|
1855
|
-
prefix_joiner = "+ ";
|
|
1856
|
-
}
|
|
1857
|
-
if (passiveSuffix && passiveSuffix.startsWith(" ")) {
|
|
1858
|
-
suffix_joiner = " +";
|
|
1859
|
-
}
|
|
1860
|
-
for (const [slot, text] of text_for_slot) {
|
|
1861
|
-
const entry = (passivePrefix || "") +
|
|
1862
|
-
prefix_joiner +
|
|
1863
|
-
ppplink + " + " +
|
|
1864
|
-
text + " of " + sumlink +
|
|
1865
|
-
suffix_joiner +
|
|
1866
|
-
(passiveSuffix || "");
|
|
1867
|
-
setVerbForm(data.forms, slot, [entry]);
|
|
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
|
-
}
|
|
1878
|
-
}
|
|
1879
|
-
|
|
1880
|
-
private override(data: ConjugationData, args: ArgMap) {
|
|
1881
|
-
for (const slot of this.iter_slots(true, false)) {
|
|
1882
|
-
const arg = args.get(slot);
|
|
1883
|
-
if (arg) {
|
|
1884
|
-
setVerbForm(data.forms, slot, arg.split("/"));
|
|
1885
|
-
}
|
|
1886
|
-
}
|
|
1887
|
-
}
|
|
1888
|
-
|
|
1889
|
-
private add_prefix_suffix(data: ConjugationData) {
|
|
1890
|
-
if (!data.presuf.get(VerbAffix.Prefix) && !data.presuf.get(VerbAffix.Suffix)) {
|
|
1891
|
-
return;
|
|
1892
|
-
}
|
|
1893
|
-
|
|
1894
|
-
const active_prefix = data.presuf.get(VerbAffix.Prefix) || "";
|
|
1895
|
-
const passive_prefix = data.presuf.get(VerbAffix.PassivePrefix) || "";
|
|
1896
|
-
const plural_prefix = data.presuf.get(VerbAffix.PluralPrefix) || "";
|
|
1897
|
-
const plural_passive_prefix = data.presuf.get(VerbAffix.PluralPassivePrefix) || "";
|
|
1898
|
-
const active_prefix_no_links = remove_links(active_prefix);
|
|
1899
|
-
const passive_prefix_no_links = remove_links(passive_prefix);
|
|
1900
|
-
const plural_prefix_no_links = remove_links(plural_prefix);
|
|
1901
|
-
const plural_passive_prefix_no_links = remove_links(plural_passive_prefix);
|
|
1902
|
-
|
|
1903
|
-
const active_suffix = data.presuf.get(VerbAffix.Suffix) || "";
|
|
1904
|
-
const passive_suffix = data.presuf.get(VerbAffix.PassiveSuffix) || "";
|
|
1905
|
-
const plural_suffix = data.presuf.get(VerbAffix.PluralSuffix) || "";
|
|
1906
|
-
const plural_passive_suffix = data.presuf.get(VerbAffix.PluralPassiveSuffix) || "";
|
|
1907
|
-
const active_suffix_no_links = remove_links(active_suffix);
|
|
1908
|
-
const passive_suffix_no_links = remove_links(passive_suffix);
|
|
1909
|
-
const plural_suffix_no_links = remove_links(plural_suffix);
|
|
1910
|
-
const plural_passive_suffix_no_links = remove_links(plural_passive_suffix);
|
|
1911
|
-
|
|
1912
|
-
for (const slot of this.iter_slots(false, true)) {
|
|
1913
|
-
if (!slot.match(/ger_/)) {
|
|
1914
|
-
let prefix = "";
|
|
1915
|
-
let suffix = "";
|
|
1916
|
-
let prefix_no_links = "";
|
|
1917
|
-
let suffix_no_links = "";
|
|
1918
|
-
if (slot.match(/pasv/) && slot.match(/[123]p/)) {
|
|
1919
|
-
prefix = plural_passive_prefix;
|
|
1920
|
-
suffix = plural_passive_suffix;
|
|
1921
|
-
prefix_no_links = plural_passive_prefix_no_links;
|
|
1922
|
-
suffix_no_links = plural_passive_suffix_no_links;
|
|
1923
|
-
} else if (slot.match(/pasv/) && !slot.match(/_inf/)) {
|
|
1924
|
-
prefix = passive_prefix;
|
|
1925
|
-
suffix = passive_suffix;
|
|
1926
|
-
prefix_no_links = passive_prefix_no_links;
|
|
1927
|
-
suffix_no_links = passive_suffix_no_links;
|
|
1928
|
-
} else if (slot.match(/[123]p/)) {
|
|
1929
|
-
prefix = plural_prefix;
|
|
1930
|
-
suffix = plural_suffix;
|
|
1931
|
-
prefix_no_links = plural_prefix_no_links;
|
|
1932
|
-
suffix_no_links = plural_suffix_no_links;
|
|
1933
|
-
} else {
|
|
1934
|
-
prefix = active_prefix;
|
|
1935
|
-
suffix = active_suffix;
|
|
1936
|
-
prefix_no_links = active_prefix_no_links;
|
|
1937
|
-
suffix_no_links = active_suffix_no_links;
|
|
1938
|
-
}
|
|
1939
|
-
|
|
1940
|
-
const forms = getVerbForm(data.forms, slot) || [];
|
|
1941
|
-
if (!LaVerb.form_is_empty(forms)) {
|
|
1942
|
-
const affixed_forms = [];
|
|
1943
|
-
for (const form of forms) {
|
|
1944
|
-
if (LaVerb.form_is_empty([form])) {
|
|
1945
|
-
affixed_forms.push(form);
|
|
1946
|
-
} else {
|
|
1947
|
-
affixed_forms.push(prefix_no_links + form + suffix_no_links);
|
|
1948
|
-
}
|
|
1949
|
-
}
|
|
1950
|
-
setVerbForm(data.forms, slot, affixed_forms);
|
|
1951
|
-
}
|
|
1952
|
-
}
|
|
1953
|
-
}
|
|
1954
|
-
}
|
|
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
|
-
|
|
1964
|
-
private set_linked_forms(data: ConjugationData, typeinfo: ConjugationInfo) {
|
|
1965
|
-
for (const slot of LaVerb.potential_lemma_slots) {
|
|
1966
|
-
const linked_forms: string[] = [];
|
|
1967
|
-
const forms = getVerbForm(data.forms, slot);
|
|
1968
|
-
if (forms) {
|
|
1969
|
-
for (const form of forms) {
|
|
1970
|
-
if (form == typeinfo.lemma) {
|
|
1971
|
-
linked_forms.push(typeinfo.orig_lemma);
|
|
1972
|
-
} else {
|
|
1973
|
-
linked_forms.push(form);
|
|
1974
|
-
}
|
|
1975
|
-
}
|
|
1976
|
-
}
|
|
1977
|
-
setVerbForm(data.forms, "linked_" + slot, linked_forms);
|
|
1978
|
-
}
|
|
1979
|
-
}
|
|
1980
|
-
|
|
1981
|
-
|
|
1982
|
-
private setup_irreg_conjs() {
|
|
1983
|
-
this.irreg_conjugations.set("aio", (args: ArgMap, data: ConjugationData, typeinfo: ConjugationInfo) => {
|
|
1984
|
-
data.categories.push("Latin third conjugation verbs");
|
|
1985
|
-
data.categories.push("Latin irregular verbs");
|
|
1986
|
-
data.categories.push("Latin active-only verbs");
|
|
1987
|
-
data.categories.push("Latin defective verbs");
|
|
1988
|
-
|
|
1989
|
-
addVerbType(typeinfo.subtypes, "irreg");
|
|
1990
|
-
addVerbType(typeinfo.subtypes, "highlydef");
|
|
1991
|
-
|
|
1992
|
-
const prefix = typeinfo.prefix;
|
|
1993
|
-
setVerbForm(data.forms, "1s_pres_actv_indc", [prefix + "aiō"]);
|
|
1994
|
-
setVerbForm(data.forms, "2s_pres_actv_indc", [prefix + "ais"]);
|
|
1995
|
-
setVerbForm(data.forms, "3s_pres_actv_indc", [prefix + "ait"]);
|
|
1996
|
-
setVerbForm(data.forms, "3p_pres_actv_indc", [prefix + "aiunt"]);
|
|
1997
|
-
|
|
1998
|
-
setVerbForm(data.forms, "1s_impf_actv_indc", [prefix + "aiēbam"]);
|
|
1999
|
-
setVerbForm(data.forms, "2s_impf_actv_indc", [prefix + "aiēbās"]);
|
|
2000
|
-
setVerbForm(data.forms, "3s_impf_actv_indc", [prefix + "aiēbat"]);
|
|
2001
|
-
setVerbForm(data.forms, "1p_impf_actv_indc", [prefix + "aiēbāmus"]);
|
|
2002
|
-
setVerbForm(data.forms, "2p_impf_actv_indc", [prefix + "aiēbātis"]);
|
|
2003
|
-
setVerbForm(data.forms, "3p_impf_actv_indc", [prefix + "aiēbant"]);
|
|
2004
|
-
|
|
2005
|
-
setVerbForm(data.forms, "2s_perf_actv_indc", [prefix + "aistī"]);
|
|
2006
|
-
setVerbForm(data.forms, "3s_perf_actv_indc", [prefix + "ait"]);
|
|
2007
|
-
|
|
2008
|
-
setVerbForm(data.forms, "2s_pres_actv_subj", [prefix + "aiās"]);
|
|
2009
|
-
setVerbForm(data.forms, "3s_pres_actv_subj", [prefix + "aiat"]);
|
|
2010
|
-
setVerbForm(data.forms, "3p_pres_actv_subj", [prefix + "aiant"]);
|
|
2011
|
-
|
|
2012
|
-
setVerbForm(data.forms, "2s_pres_actv_impr", [prefix + "ai"]);
|
|
2013
|
-
|
|
2014
|
-
setVerbForm(data.forms, "pres_actv_inf", [prefix + "aiere"]);
|
|
2015
|
-
setVerbForm(data.forms, "pres_actv_ptc", [prefix + "aiēns"]);
|
|
2016
|
-
});
|
|
2017
|
-
|
|
2018
|
-
this.irreg_conjugations.set("aiio", (args: ArgMap, data: ConjugationData, typeinfo: ConjugationInfo) => {
|
|
2019
|
-
data.categories.push("Latin third conjugation verbs");
|
|
2020
|
-
data.categories.push("Latin irregular verbs");
|
|
2021
|
-
data.categories.push("Latin active-only verbs");
|
|
2022
|
-
data.categories.push("Latin defective verbs");
|
|
2023
|
-
|
|
2024
|
-
addVerbType(typeinfo.subtypes, "irreg");
|
|
2025
|
-
addVerbType(typeinfo.subtypes, "highlydef");
|
|
2026
|
-
|
|
2027
|
-
const prefix = typeinfo.prefix;
|
|
2028
|
-
setVerbForm(data.forms, "1s_pres_actv_indc", [prefix + "aiiō"]);
|
|
2029
|
-
setVerbForm(data.forms, "2s_pres_actv_indc", [prefix + "ais"]);
|
|
2030
|
-
setVerbForm(data.forms, "3s_pres_actv_indc", [prefix + "ait"]);
|
|
2031
|
-
setVerbForm(data.forms, "3p_pres_actv_indc", [prefix + "aiunt"]);
|
|
2032
|
-
|
|
2033
|
-
setVerbForm(data.forms, "1s_impf_actv_indc", [prefix + "aiiēbam"]);
|
|
2034
|
-
setVerbForm(data.forms, "2s_impf_actv_indc", [prefix + "aiiēbās"]);
|
|
2035
|
-
setVerbForm(data.forms, "3s_impf_actv_indc", [prefix + "aiiēbat"]);
|
|
2036
|
-
setVerbForm(data.forms, "1p_impf_actv_indc", [prefix + "aiiēbāmus"]);
|
|
2037
|
-
setVerbForm(data.forms, "2p_impf_actv_indc", [prefix + "aiiēbātis"]);
|
|
2038
|
-
setVerbForm(data.forms, "3p_impf_actv_indc", [prefix + "aiiēbant"]);
|
|
2039
|
-
|
|
2040
|
-
setVerbForm(data.forms, "2s_perf_actv_indc", [prefix + "aistī"]);
|
|
2041
|
-
setVerbForm(data.forms, "3s_perf_actv_indc", [prefix + "ait"]);
|
|
2042
|
-
|
|
2043
|
-
setVerbForm(data.forms, "2s_pres_actv_subj", [prefix + "aiiās"]);
|
|
2044
|
-
setVerbForm(data.forms, "3s_pres_actv_subj", [prefix + "aiiat"]);
|
|
2045
|
-
setVerbForm(data.forms, "3p_pres_actv_subj", [prefix + "aiiant"]);
|
|
2046
|
-
|
|
2047
|
-
setVerbForm(data.forms, "2s_pres_actv_impr", [prefix + "ai"]);
|
|
2048
|
-
|
|
2049
|
-
setVerbForm(data.forms, "pres_actv_inf", [prefix + "aiiere"]);
|
|
2050
|
-
setVerbForm(data.forms, "pres_actv_ptc", [prefix + "aiiēns"]);
|
|
2051
|
-
});
|
|
2052
|
-
|
|
2053
|
-
this.irreg_conjugations.set("ajo", (args: ArgMap, data: ConjugationData, typeinfo: ConjugationInfo) => {
|
|
2054
|
-
data.categories.push("Latin third conjugation verbs");
|
|
2055
|
-
data.categories.push("Latin irregular verbs");
|
|
2056
|
-
data.categories.push("Latin active-only verbs");
|
|
2057
|
-
data.categories.push("Latin defective verbs");
|
|
2058
|
-
|
|
2059
|
-
addVerbType(typeinfo.subtypes, "irreg");
|
|
2060
|
-
addVerbType(typeinfo.subtypes, "highlydef");
|
|
2061
|
-
|
|
2062
|
-
const prefix = typeinfo.prefix;
|
|
2063
|
-
setVerbForm(data.forms, "1s_pres_actv_indc", [prefix + "ajō"]);
|
|
2064
|
-
setVerbForm(data.forms, "2s_pres_actv_indc", [prefix + "ais"]);
|
|
2065
|
-
setVerbForm(data.forms, "3s_pres_actv_indc", [prefix + "ait"]);
|
|
2066
|
-
setVerbForm(data.forms, "3p_pres_actv_indc", [prefix + "ajunt"]);
|
|
2067
|
-
|
|
2068
|
-
setVerbForm(data.forms, "1s_impf_actv_indc", [prefix + "ajēbam"]);
|
|
2069
|
-
setVerbForm(data.forms, "2s_impf_actv_indc", [prefix + "ajēbās"]);
|
|
2070
|
-
setVerbForm(data.forms, "3s_impf_actv_indc", [prefix + "ajēbat"]);
|
|
2071
|
-
setVerbForm(data.forms, "1p_impf_actv_indc", [prefix + "ajēbāmus"]);
|
|
2072
|
-
setVerbForm(data.forms, "2p_impf_actv_indc", [prefix + "ajēbātis"]);
|
|
2073
|
-
setVerbForm(data.forms, "3p_impf_actv_indc", [prefix + "ajēbant"]);
|
|
2074
|
-
|
|
2075
|
-
setVerbForm(data.forms, "2s_perf_actv_indc", [prefix + "aistī"]);
|
|
2076
|
-
setVerbForm(data.forms, "3s_perf_actv_indc", [prefix + "ait"]);
|
|
2077
|
-
|
|
2078
|
-
setVerbForm(data.forms, "2s_pres_actv_subj", [prefix + "ajās"]);
|
|
2079
|
-
setVerbForm(data.forms, "3s_pres_actv_subj", [prefix + "ajat"]);
|
|
2080
|
-
setVerbForm(data.forms, "3p_pres_actv_subj", [prefix + "ajant"]);
|
|
2081
|
-
|
|
2082
|
-
setVerbForm(data.forms, "2s_pres_actv_impr", [prefix + "ai"]);
|
|
2083
|
-
|
|
2084
|
-
setVerbForm(data.forms, "pres_actv_inf", [prefix + "ajere"]);
|
|
2085
|
-
setVerbForm(data.forms, "pres_actv_ptc", [prefix + "ajēns"]);
|
|
2086
|
-
});
|
|
2087
|
-
|
|
2088
|
-
this.irreg_conjugations.set("dico", (args: ArgMap, data: ConjugationData, typeinfo: ConjugationInfo) => {
|
|
2089
|
-
data.categories.push("Latin third conjugation verbs");
|
|
2090
|
-
data.categories.push("Latin irregular verbs");
|
|
2091
|
-
|
|
2092
|
-
const prefix = typeinfo.prefix;
|
|
2093
|
-
this.make_pres_3rd(data, typeinfo, prefix + "dīc");
|
|
2094
|
-
this.make_perf(data, [prefix + "dīx"]);
|
|
2095
|
-
this.make_supine(data, typeinfo, [prefix + "dict"]);
|
|
2096
|
-
|
|
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
|
-
}
|
|
2109
|
-
});
|
|
2110
|
-
|
|
2111
|
-
this.irreg_conjugations.set("do", (args: ArgMap, data: ConjugationData, typeinfo: ConjugationInfo) => {
|
|
2112
|
-
data.categories.push("Latin first conjugation verbs");
|
|
2113
|
-
data.categories.push("Latin irregular verbs");
|
|
2114
|
-
|
|
2115
|
-
addVerbType(typeinfo.subtypes, "irreg");
|
|
2116
|
-
const prefix = typeinfo.prefix;
|
|
2117
|
-
|
|
2118
|
-
this.make_perf(data, [prefix + "ded"]);
|
|
2119
|
-
this.make_supine(data, typeinfo, [prefix + "dat"]);
|
|
2120
|
-
|
|
2121
|
-
this.add_forms(data, "pres_actv_indc", prefix, "dō", "dās", "dat", "damus", "datis", "dant");
|
|
2122
|
-
this.add_forms(data, "impf_actv_indc", prefix, "dabam", "dabās", "dabat", "dabāmus", "dabātis", "dabant");
|
|
2123
|
-
this.add_forms(data, "futr_actv_indc", prefix, "dabō", "dabis", "dabit", "dabimus", "dabitis", "dabunt");
|
|
2124
|
-
|
|
2125
|
-
this.add_forms(data, "pres_pasv_indc", prefix, "dor", ["daris", "dare"], "datur", "damur", "daminī", "dantur");
|
|
2126
|
-
this.add_forms(data, "impf_pasv_indc", prefix, "dabar", ["dabāris", "dabāre"], "dabātur", "dabāmur", "dabāminī", "dabantur");
|
|
2127
|
-
this.add_forms(data, "futr_pasv_indc", prefix, "dabor", ["daberis", "dabere"], "dabitur", "dabimur", "dabiminī", "dabuntur");
|
|
2128
|
-
|
|
2129
|
-
this.add_forms(data, "pres_actv_subj", prefix, "dem", "dēs", "det", "dēmus", "dētis", "dent");
|
|
2130
|
-
this.add_forms(data, "impf_actv_subj", prefix, "darem", "darēs", "daret", "darēmus", "darētis", "darent");
|
|
2131
|
-
|
|
2132
|
-
this.add_forms(data, "pres_pasv_subj", prefix, "der", ["dēris", "dēre"], "dētur", "dēmur", "dēminī", "dentur");
|
|
2133
|
-
this.add_forms(data, "impf_pasv_subj", prefix, "darer", ["darēris", "darēre"], "darētur", "darēmur", "darēminī", "darentur");
|
|
2134
|
-
|
|
2135
|
-
this.add_2_forms(data, "pres_actv_impr", prefix, "dā", "date");
|
|
2136
|
-
this.add_23_forms(data, "futr_actv_impr", prefix, "datō", "datō", "datōte", "dantō");
|
|
2137
|
-
|
|
2138
|
-
this.add_2_forms(data, "pres_pasv_impr", prefix, "dare", "daminī");
|
|
2139
|
-
this.add_23_forms(data, "futr_pasv_impr", prefix, "dator", "dator", [], "dantor");
|
|
2140
|
-
|
|
2141
|
-
setVerbForm(data.forms, "pres_actv_inf", [prefix + "dare"]);
|
|
2142
|
-
setVerbForm(data.forms, "pres_pasv_inf", [prefix + "darī"]);
|
|
2143
|
-
|
|
2144
|
-
setVerbForm(data.forms, "pres_actv_ptc", [prefix + "dāns"]);
|
|
2145
|
-
|
|
2146
|
-
this.make_gerund(data, typeinfo, prefix + "dand");
|
|
2147
|
-
});
|
|
2148
|
-
|
|
2149
|
-
this.irreg_conjugations.set("duco", (args: ArgMap, data: ConjugationData, typeinfo: ConjugationInfo) => {
|
|
2150
|
-
data.categories.push("Latin third conjugation verbs");
|
|
2151
|
-
data.categories.push("Latin irregular verbs");
|
|
2152
|
-
|
|
2153
|
-
const prefix = typeinfo.prefix;
|
|
2154
|
-
this.make_pres_3rd(data, typeinfo, prefix + "dūc");
|
|
2155
|
-
this.make_perf(data, [prefix + "dūx"]);
|
|
2156
|
-
this.make_supine(data, typeinfo, [prefix + "duct"]);
|
|
2157
|
-
|
|
2158
|
-
this.add_form(data, "2s_pres_actv_impr", prefix, "dūc", 1);
|
|
2159
|
-
});
|
|
2160
|
-
|
|
2161
|
-
this.irreg_conjugations.set("edo", (args: ArgMap, data: ConjugationData, typeinfo: ConjugationInfo) => {
|
|
2162
|
-
data.categories.push("Latin third conjugation verbs");
|
|
2163
|
-
data.categories.push("Latin irregular verbs");
|
|
2164
|
-
|
|
2165
|
-
addVerbType(typeinfo.subtypes, "irreg");
|
|
2166
|
-
|
|
2167
|
-
const prefix = typeinfo.prefix;
|
|
2168
|
-
this.make_pres_3rd(data, typeinfo, prefix + "ed");
|
|
2169
|
-
this.make_perf(data, [prefix + "ēd"]);
|
|
2170
|
-
this.make_supine(data, typeinfo, [prefix + "ēs"]);
|
|
2171
|
-
|
|
2172
|
-
this.add_forms(data, "pres_actv_indc", prefix, [], "ēs", "ēst", [], "ēstis", []);
|
|
2173
|
-
|
|
2174
|
-
this.add_form(data, "3s_pres_pasv_indc", prefix, "ēstur");
|
|
2175
|
-
|
|
2176
|
-
this.add_forms(data, "pres_actv_subj", prefix, "edim", "edīs", "edit", "edīmus", "edītis", "edint");
|
|
2177
|
-
this.add_forms(data, "impf_actv_subj", prefix, "ēssem", "ēssēs", "ēsset", "ēssēmus", "ēssētis", "ēssent");
|
|
2178
|
-
|
|
2179
|
-
this.add_2_forms(data, "pres_actv_impr", prefix, "ēs", "ēste");
|
|
2180
|
-
this.add_23_forms(data, "futr_actv_impr", prefix, "ēstō", "ēstō", "ēstōte", []);
|
|
2181
|
-
|
|
2182
|
-
if (this.options.reorderEdere) {
|
|
2183
|
-
// switch order to make ēsse the lemma
|
|
2184
|
-
setVerbForm(data.forms, "pres_actv_inf", [prefix + "ēsse", prefix + "edere"]);
|
|
2185
|
-
} else {
|
|
2186
|
-
this.add_form(data, "pres_actv_inf", prefix, "ēsse");
|
|
2187
|
-
}
|
|
2188
|
-
});
|
|
2189
|
-
|
|
2190
|
-
this.irreg_conjugations.set("eo", (args: ArgMap, data: ConjugationData, typeinfo: ConjugationInfo) => {
|
|
2191
|
-
data.categories.push("Latin irregular verbs");
|
|
2192
|
-
|
|
2193
|
-
const prefix = typeinfo.prefix;
|
|
2194
|
-
this.make_perf(data, [prefix + "i"]);
|
|
2195
|
-
this.make_supine(data, typeinfo, [prefix + "it"]);
|
|
2196
|
-
|
|
2197
|
-
this.add_forms(data, "pres_actv_indc", prefix, "eō", "īs", "it", "īmus", "ītis", prefix == "prōd" ? ["eunt", "īnunt"] : "eunt");
|
|
2198
|
-
this.add_forms(data, "impf_actv_indc", prefix, "ībam", "ībās", "ībat", "ībāmus", "ībātis", "ībant");
|
|
2199
|
-
this.add_forms(data, "futr_actv_indc", prefix, "ībō", "ībis", "ībit", "ībimus", "ībitis", "ībunt");
|
|
2200
|
-
|
|
2201
|
-
this.add_form(data, "1s_perf_actv_indc", prefix, "īvī");
|
|
2202
|
-
setVerbForm(data.forms, "2s_perf_actv_indc", [prefix + "īstī", prefix + "īvistī"]);
|
|
2203
|
-
this.add_form(data, "3s_perf_actv_indc", prefix, "īvit");
|
|
2204
|
-
setVerbForm(data.forms, "2p_perf_actv_indc", [prefix + "īstis"]);
|
|
2205
|
-
|
|
2206
|
-
this.add_forms(data, "pres_pasv_indc", prefix, "eor", ["īris", "īre"], "ītur", "īmur", "īminī", "euntur");
|
|
2207
|
-
this.add_forms(data, "impf_pasv_indc", prefix, "ībar", ["ībāris", "ībāre"], "ībātur", "ībāmur", "ībāminī", "ībantur");
|
|
2208
|
-
this.add_forms(data, "futr_pasv_indc", prefix, "ībor", ["īberis", "ībere"], "ībitur", "ībimur", "ībiminī", "ībuntur");
|
|
2209
|
-
|
|
2210
|
-
this.add_forms(data, "pres_actv_subj", prefix, "eam", "eās", "eat", "eāmus", "eātis", "eant");
|
|
2211
|
-
this.add_forms(data, "impf_actv_subj", prefix, "īrem", "īrēs", "īret", "īrēmus", "īrētis", "īrent");
|
|
2212
|
-
|
|
2213
|
-
setVerbForm(data.forms, "1s_plup_actv_subj", [prefix + "īssem"]);
|
|
2214
|
-
setVerbForm(data.forms, "2s_plup_actv_subj", [prefix + "īssēs"]);
|
|
2215
|
-
setVerbForm(data.forms, "3s_plup_actv_subj", [prefix + "īsset"]);
|
|
2216
|
-
setVerbForm(data.forms, "1p_plup_actv_subj", [prefix + "īssēmus"]);
|
|
2217
|
-
setVerbForm(data.forms, "2p_plup_actv_subj", [prefix + "īssētis"]);
|
|
2218
|
-
setVerbForm(data.forms, "3p_plup_actv_subj", [prefix + "īssent"]);
|
|
2219
|
-
|
|
2220
|
-
this.add_forms(data, "pres_pasv_subj", prefix, "ear", ["eāris", "eāre"], "eātur", "eāmur", "eāminī", "eantur");
|
|
2221
|
-
this.add_forms(data, "impf_pasv_subj", prefix, "īrer", ["īrēris", "īrēre"], "īrētur", "īrēmur", "īrēminī", "īrentur");
|
|
2222
|
-
|
|
2223
|
-
this.add_2_forms(data, "pres_actv_impr", prefix, "ī", "īte");
|
|
2224
|
-
this.add_23_forms(data, "futr_actv_impr", prefix, "ītō", "ītō", "ītōte", "euntō");
|
|
2225
|
-
|
|
2226
|
-
this.add_2_forms(data, "pres_pasv_impr", prefix, "īre", "īminī");
|
|
2227
|
-
this.add_23_forms(data, "futr_pasv_impr", prefix, "ītor", "ītor", [], "euntor");
|
|
2228
|
-
|
|
2229
|
-
setVerbForm(data.forms, "pres_actv_inf", [prefix + "īre"]);
|
|
2230
|
-
setVerbForm(data.forms, "pres_pasv_inf", [prefix + "īrī"]);
|
|
2231
|
-
|
|
2232
|
-
if (!this.options.ireWithShortPerfInf) {
|
|
2233
|
-
// guard added by @fpw for FR style iisse
|
|
2234
|
-
setVerbForm(data.forms, "perf_actv_inf", [prefix + "īsse"]);
|
|
2235
|
-
}
|
|
2236
|
-
setVerbForm(data.forms, "pres_actv_ptc", [prefix + "iēns"]);
|
|
2237
|
-
|
|
2238
|
-
this.make_gerund(data, typeinfo, prefix + "eund");
|
|
2239
|
-
});
|
|
2240
|
-
|
|
2241
|
-
this.irreg_conjugations.set("facio", (args: ArgMap, data: ConjugationData, typeinfo: ConjugationInfo) => {
|
|
2242
|
-
data.categories.push("Latin third conjugation verbs");
|
|
2243
|
-
data.categories.push("Latin irregular verbs");
|
|
2244
|
-
data.categories.push("Latin suppletive verbs");
|
|
2245
|
-
|
|
2246
|
-
const prefix = typeinfo.prefix;
|
|
2247
|
-
this.make_pres_3rd_io(data, typeinfo, prefix + "fac", true);
|
|
2248
|
-
this.make_gerund(data, typeinfo, prefix + "faciend", true, true);
|
|
2249
|
-
this.make_perf(data, [prefix + "fēc"]);
|
|
2250
|
-
this.make_supine(data, typeinfo, [prefix + "fact"]);
|
|
2251
|
-
|
|
2252
|
-
if (!prefix) {
|
|
2253
|
-
this.add_form(data, "2s_pres_actv_impr", prefix, "fac", 1);
|
|
2254
|
-
}
|
|
2255
|
-
|
|
2256
|
-
this.fio(data, prefix, "pasv");
|
|
2257
|
-
});
|
|
2258
|
-
|
|
2259
|
-
this.irreg_conjugations.set("fio", (args: ArgMap, data: ConjugationData, typeinfo: ConjugationInfo) => {
|
|
2260
|
-
data.categories.push("Latin third conjugation verbs");
|
|
2261
|
-
data.categories.push("Latin irregular verbs");
|
|
2262
|
-
data.categories.push("Latin suppletive verbs");
|
|
2263
|
-
|
|
2264
|
-
const prefix = typeinfo.prefix;
|
|
2265
|
-
|
|
2266
|
-
addVerbType(typeinfo.subtypes, "semidepon");
|
|
2267
|
-
this.fio(data, prefix, "actv");
|
|
2268
|
-
|
|
2269
|
-
this.make_supine(data, typeinfo, [prefix + "fact"]);
|
|
2270
|
-
|
|
2271
|
-
setVerbForm(data.forms, "futr_actv_inf", getVerbForm(data.forms, "futr_pasv_inf") || []);
|
|
2272
|
-
setVerbForm(data.forms, "pres_actv_ptc", []);
|
|
2273
|
-
setVerbForm(data.forms, "futr_actv_ptc", []);
|
|
2274
|
-
|
|
2275
|
-
this.make_gerund(data, typeinfo, prefix + "fiend", true);
|
|
2276
|
-
});
|
|
2277
|
-
|
|
2278
|
-
this.irreg_conjugations.set("fero", (args: ArgMap, data: ConjugationData, typeinfo: ConjugationInfo) => {
|
|
2279
|
-
data.categories.push("Latin third conjugation verbs");
|
|
2280
|
-
data.categories.push("Latin irregular verbs");
|
|
2281
|
-
data.categories.push("Latin suppletive verbs");
|
|
2282
|
-
|
|
2283
|
-
addVerbType(typeinfo.subtypes, "irreg");
|
|
2284
|
-
|
|
2285
|
-
const prefix_pres = typeinfo.prefix;
|
|
2286
|
-
let prefix_perf = this.ine(args.get("3"));
|
|
2287
|
-
let prefix_supine = this.ine(args.get("4"));
|
|
2288
|
-
|
|
2289
|
-
prefix_perf = prefix_perf || prefix_pres;
|
|
2290
|
-
prefix_supine = prefix_supine || prefix_pres;
|
|
2291
|
-
|
|
2292
|
-
this.make_pres_3rd(data, typeinfo, prefix_pres + "fer");
|
|
2293
|
-
if (!prefix_perf) {
|
|
2294
|
-
if (this.options.suppressArchaic) {
|
|
2295
|
-
// added by @fpw
|
|
2296
|
-
this.make_perf(data, ["tul"]);
|
|
2297
|
-
} else {
|
|
2298
|
-
this.make_perf(data, ["tul", "tetul"]);
|
|
2299
|
-
for (const slot of this.iter_slots(false, false)) {
|
|
2300
|
-
if (slot.match(/perf/) || slot.match(/plup/) || slot.match(/futp/)) {
|
|
2301
|
-
data.footnotes.set(slot, ["Archaic."]);
|
|
2302
|
-
}
|
|
2303
|
-
}
|
|
2304
|
-
}
|
|
2305
|
-
} else {
|
|
2306
|
-
this.make_perf(data, [prefix_perf + "tul"]);
|
|
2307
|
-
}
|
|
2308
|
-
this.make_supine(data, typeinfo, [prefix_supine + "lāt"]);
|
|
2309
|
-
|
|
2310
|
-
setVerbForm(data.forms, "2s_pres_actv_indc", [prefix_pres + "fers"]);
|
|
2311
|
-
setVerbForm(data.forms, "3s_pres_actv_indc", [prefix_pres + "fert"]);
|
|
2312
|
-
setVerbForm(data.forms, "2p_pres_actv_indc", [prefix_pres + "fertis"]);
|
|
2313
|
-
|
|
2314
|
-
setVerbForm(data.forms, "3s_pres_pasv_indc", [prefix_pres + "fertur"]);
|
|
2315
|
-
|
|
2316
|
-
setVerbForm(data.forms, "1s_impf_actv_subj", [prefix_pres + "ferrem"]);
|
|
2317
|
-
setVerbForm(data.forms, "2s_impf_actv_subj", [prefix_pres + "ferrēs"]);
|
|
2318
|
-
setVerbForm(data.forms, "3s_impf_actv_subj", [prefix_pres + "ferret"]);
|
|
2319
|
-
setVerbForm(data.forms, "1p_impf_actv_subj", [prefix_pres + "ferrēmus"]);
|
|
2320
|
-
setVerbForm(data.forms, "2p_impf_actv_subj", [prefix_pres + "ferrētis"]);
|
|
2321
|
-
setVerbForm(data.forms, "3p_impf_actv_subj", [prefix_pres + "ferrent"]);
|
|
2322
|
-
|
|
2323
|
-
setVerbForm(data.forms, "2s_pres_pasv_indc", [prefix_pres + "ferris", prefix_pres + "ferre"]);
|
|
2324
|
-
|
|
2325
|
-
setVerbForm(data.forms, "1s_impf_pasv_subj", [prefix_pres + "ferrer"]);
|
|
2326
|
-
setVerbForm(data.forms, "2s_impf_pasv_subj", [prefix_pres + "ferrēris", prefix_pres + "ferrēre"]);
|
|
2327
|
-
setVerbForm(data.forms, "3s_impf_pasv_subj", [prefix_pres + "ferrētur"]);
|
|
2328
|
-
setVerbForm(data.forms, "1p_impf_pasv_subj", [prefix_pres + "ferrēmur"]);
|
|
2329
|
-
setVerbForm(data.forms, "2p_impf_pasv_subj", [prefix_pres + "ferrēminī"]);
|
|
2330
|
-
setVerbForm(data.forms, "3p_impf_pasv_subj", [prefix_pres + "ferrentur"]);
|
|
2331
|
-
|
|
2332
|
-
setVerbForm(data.forms, "2s_pres_actv_impr", [prefix_pres + "fer"]);
|
|
2333
|
-
setVerbForm(data.forms, "2p_pres_actv_impr", [prefix_pres + "ferte"]);
|
|
2334
|
-
|
|
2335
|
-
setVerbForm(data.forms, "2s_futr_actv_impr", [prefix_pres + "fertō"]);
|
|
2336
|
-
setVerbForm(data.forms, "3s_futr_actv_impr", [prefix_pres + "fertō"]);
|
|
2337
|
-
setVerbForm(data.forms, "2p_futr_actv_impr", [prefix_pres + "fertōte"]);
|
|
2338
|
-
|
|
2339
|
-
setVerbForm(data.forms, "2s_pres_pasv_impr", [prefix_pres + "ferre"]);
|
|
2340
|
-
|
|
2341
|
-
setVerbForm(data.forms, "2s_futr_pasv_impr", [prefix_pres + "fertor"]);
|
|
2342
|
-
setVerbForm(data.forms, "3s_futr_pasv_impr", [prefix_pres + "fertor"]);
|
|
2343
|
-
|
|
2344
|
-
setVerbForm(data.forms, "pres_actv_inf", [prefix_pres + "ferre"]);
|
|
2345
|
-
setVerbForm(data.forms, "pres_pasv_inf", [prefix_pres + "ferrī"]);
|
|
2346
|
-
});
|
|
2347
|
-
|
|
2348
|
-
this.irreg_conjugations.set("inquam", (args: ArgMap, data: ConjugationData, typeinfo: ConjugationInfo) => {
|
|
2349
|
-
data.categories.push("Latin irregular verbs");
|
|
2350
|
-
data.categories.push("Latin defective verbs");
|
|
2351
|
-
|
|
2352
|
-
addVerbType(typeinfo.subtypes, "highlydef");
|
|
2353
|
-
|
|
2354
|
-
setVerbForm(data.forms, "1s_pres_actv_indc", ["inquam"]);
|
|
2355
|
-
setVerbForm(data.forms, "2s_pres_actv_indc", ["inquis"]);
|
|
2356
|
-
setVerbForm(data.forms, "3s_pres_actv_indc", ["inquit"]);
|
|
2357
|
-
setVerbForm(data.forms, "1p_pres_actv_indc", ["inquimus"]);
|
|
2358
|
-
setVerbForm(data.forms, "2p_pres_actv_indc", ["inquitis"]);
|
|
2359
|
-
setVerbForm(data.forms, "3p_pres_actv_indc", ["inquiunt"]);
|
|
2360
|
-
|
|
2361
|
-
setVerbForm(data.forms, "2s_futr_actv_indc", ["inquiēs"]);
|
|
2362
|
-
setVerbForm(data.forms, "3s_futr_actv_indc", ["inquiet"]);
|
|
2363
|
-
|
|
2364
|
-
setVerbForm(data.forms, "3s_impf_actv_indc", ["inquiēbat"]);
|
|
2365
|
-
|
|
2366
|
-
setVerbForm(data.forms, "1s_perf_actv_indc", ["inquiī"]);
|
|
2367
|
-
setVerbForm(data.forms, "2s_perf_actv_indc", ["inquistī"]);
|
|
2368
|
-
setVerbForm(data.forms, "3s_perf_actv_indc", ["inquit"]);
|
|
2369
|
-
|
|
2370
|
-
setVerbForm(data.forms, "3s_pres_actv_subj", ["inquiat"]);
|
|
2371
|
-
|
|
2372
|
-
setVerbForm(data.forms, "2s_pres_actv_impr", ["inque"]);
|
|
2373
|
-
setVerbForm(data.forms, "2s_futr_actv_impr", ["inquitō"]);
|
|
2374
|
-
setVerbForm(data.forms, "3s_futr_actv_impr", ["inquitō"]);
|
|
2375
|
-
|
|
2376
|
-
setVerbForm(data.forms, "pres_actv_ptc", ["inquiēns"]);
|
|
2377
|
-
});
|
|
2378
|
-
|
|
2379
|
-
|
|
2380
|
-
this.irreg_conjugations.set("libet", (args: ArgMap, data: ConjugationData, typeinfo: ConjugationInfo) => {
|
|
2381
|
-
this.libet_lubet(data, typeinfo, "lib");
|
|
2382
|
-
});
|
|
2383
|
-
|
|
2384
|
-
this.irreg_conjugations.set("lubet", (args: ArgMap, data: ConjugationData, typeinfo: ConjugationInfo) => {
|
|
2385
|
-
this.libet_lubet(data, typeinfo, "lub");
|
|
2386
|
-
});
|
|
2387
|
-
|
|
2388
|
-
this.irreg_conjugations.set("licet", (args: ArgMap, data: ConjugationData, typeinfo: ConjugationInfo) => {
|
|
2389
|
-
data.categories.push("Latin second conjugation verbs");
|
|
2390
|
-
data.categories.push("Latin impersonal verbs");
|
|
2391
|
-
|
|
2392
|
-
addVerbType(typeinfo.subtypes, "nopass");
|
|
2393
|
-
|
|
2394
|
-
setVerbForm(data.forms, "3s_pres_actv_indc", ["licet"]);
|
|
2395
|
-
setVerbForm(data.forms, "3p_pres_actv_indc", ["licent"]);
|
|
2396
|
-
|
|
2397
|
-
setVerbForm(data.forms, "3s_impf_actv_indc", ["licēbat"]);
|
|
2398
|
-
setVerbForm(data.forms, "3p_impf_actv_indc", ["licēbant"]);
|
|
2399
|
-
|
|
2400
|
-
setVerbForm(data.forms, "3s_futr_actv_indc", ["licēbit"]);
|
|
2401
|
-
|
|
2402
|
-
setVerbForm(data.forms, "3s_perf_actv_indc", ["licuit", "licitum [[esse|est]]"]);
|
|
2403
|
-
|
|
2404
|
-
setVerbForm(data.forms, "3s_plup_actv_indc", ["licuerat", "licitum [[esse|erat]]"]);
|
|
2405
|
-
|
|
2406
|
-
setVerbForm(data.forms, "3s_futp_actv_indc", ["licuerit", "licitum [[esse|erit]]"]);
|
|
2407
|
-
|
|
2408
|
-
setVerbForm(data.forms, "3s_pres_actv_subj", ["liceat"]);
|
|
2409
|
-
setVerbForm(data.forms, "3p_pres_actv_subj", ["liceant"]);
|
|
2410
|
-
|
|
2411
|
-
setVerbForm(data.forms, "3s_impf_actv_subj", ["licēret"]);
|
|
2412
|
-
|
|
2413
|
-
setVerbForm(data.forms, "3s_perf_actv_subj", ["licuerit", "licitum [[esse|sit]]"]);
|
|
2414
|
-
|
|
2415
|
-
setVerbForm(data.forms, "3s_plup_actv_subj", ["licuisset", "licitum [[esse|esset]]"]);
|
|
2416
|
-
|
|
2417
|
-
setVerbForm(data.forms, "2s_futr_actv_impr", ["licētō"]);
|
|
2418
|
-
setVerbForm(data.forms, "3s_futr_actv_impr", ["licētō"]);
|
|
2419
|
-
|
|
2420
|
-
setVerbForm(data.forms, "pres_actv_inf", ["licēre"]);
|
|
2421
|
-
setVerbForm(data.forms, "perf_actv_inf", ["licuisse", "licitum [[esse|esse]]"]);
|
|
2422
|
-
setVerbForm(data.forms, "futr_actv_inf", ["licitūrum [[esse|esse]]"]);
|
|
2423
|
-
|
|
2424
|
-
setVerbForm(data.forms, "pres_actv_ptc", ["licēns"]);
|
|
2425
|
-
setVerbForm(data.forms, "perf_actv_ptc", ["licitus"]);
|
|
2426
|
-
setVerbForm(data.forms, "futr_actv_ptc", ["licitūrus"]);
|
|
2427
|
-
});
|
|
2428
|
-
|
|
2429
|
-
this.irreg_conjugations.set("volo", (args: ArgMap, data: ConjugationData, typeinfo: ConjugationInfo) => {
|
|
2430
|
-
data.categories.push("Latin irregular verbs");
|
|
2431
|
-
data.categories.push("Latin suppletive verbs");
|
|
2432
|
-
|
|
2433
|
-
const prefix = typeinfo.prefix;
|
|
2434
|
-
|
|
2435
|
-
addVerbType(typeinfo.subtypes, "nopass");
|
|
2436
|
-
addVerbType(typeinfo.subtypes, "noimp");
|
|
2437
|
-
this.make_perf(data, [prefix + "volu"]);
|
|
2438
|
-
this.add_forms(data, "pres_actv_indc", prefix, "volō", "vīs", prefix ? "vult" : ["vult", "volt"], "volumus", prefix ? "vultis" : ["vultis", "voltis"], "volunt");
|
|
2439
|
-
this.volo_malo_nolo(data, prefix + "vol", prefix + "vel");
|
|
2440
|
-
});
|
|
2441
|
-
|
|
2442
|
-
this.irreg_conjugations.set("malo", (args: ArgMap, data: ConjugationData, typeinfo: ConjugationInfo) => {
|
|
2443
|
-
data.categories.push("Latin irregular verbs");
|
|
2444
|
-
data.categories.push("Latin suppletive verbs");
|
|
2445
|
-
|
|
2446
|
-
addVerbType(typeinfo.subtypes, "nopass");
|
|
2447
|
-
addVerbType(typeinfo.subtypes, "noimp");
|
|
2448
|
-
this.make_perf(data, ["mālu"]);
|
|
2449
|
-
this.add_forms(data, "pres_actv_indc", "", "mālō", "māvīs", "māvult", "mālumus", "māvultis", "mālunt");
|
|
2450
|
-
this.volo_malo_nolo(data, "māl", "māl");
|
|
2451
|
-
});
|
|
2452
|
-
|
|
2453
|
-
this.irreg_conjugations.set("nolo", (args: ArgMap, data: ConjugationData, typeinfo: ConjugationInfo) => {
|
|
2454
|
-
data.categories.push("Latin irregular verbs");
|
|
2455
|
-
data.categories.push("Latin suppletive verbs");
|
|
2456
|
-
|
|
2457
|
-
addVerbType(typeinfo.subtypes, "nopass");
|
|
2458
|
-
|
|
2459
|
-
this.make_perf(data, ["nōlu"]);
|
|
2460
|
-
this.add_forms(data, "pres_actv_indc", "", "nōlō", "nōn vīs", "nōn vult", "nōlumus", "nōn vultis", "nōlunt");
|
|
2461
|
-
this.add_forms(data, "impf_actv_indc", "nōlēb", "am", "ās", "at", "āmus", "ātis", "ant");
|
|
2462
|
-
this.volo_malo_nolo(data, "nōl", "nōl");
|
|
2463
|
-
|
|
2464
|
-
this.add_2_forms(data, "pres_actv_impr", "nōlī", "", "te");
|
|
2465
|
-
this.add_23_forms(data, "futr_actv_impr", "nōl", "itō", "itō", "itōte", "untō");
|
|
2466
|
-
});
|
|
2467
|
-
|
|
2468
|
-
this.irreg_conjugations.set("possum", (args: ArgMap, data: ConjugationData, typeinfo: ConjugationInfo) => {
|
|
2469
|
-
data.categories.push("Latin irregular verbs");
|
|
2470
|
-
data.categories.push("Latin suppletive verbs");
|
|
2471
|
-
|
|
2472
|
-
addVerbType(typeinfo.subtypes, "nopass");
|
|
2473
|
-
|
|
2474
|
-
this.make_perf(data, ["potu"]);
|
|
2475
|
-
|
|
2476
|
-
this.add_forms(data, "pres_actv_indc", "", "possum", "potes", "potest", "possumus", "potestis", "possunt");
|
|
2477
|
-
this.add_forms(data, "impf_actv_indc", "poter", "am", "ās", "at", "āmus", "ātis", "ant");
|
|
2478
|
-
this.add_forms(data, "futr_actv_indc", "poter", "ō", ["is", "e"], "it", "imus", "itis", "unt");
|
|
2479
|
-
|
|
2480
|
-
this.add_forms(data, "pres_actv_subj", "poss", "im", "īs", "it", "īmus", "ītis", "int");
|
|
2481
|
-
this.add_forms(data, "impf_actv_subj", "poss", "em", "ēs", "et", "ēmus", "ētis", "ent");
|
|
2482
|
-
|
|
2483
|
-
setVerbForm(data.forms, "pres_actv_inf", ["posse"]);
|
|
2484
|
-
setVerbForm(data.forms, "pres_actv_ptc", ["potēns"]);
|
|
2485
|
-
});
|
|
2486
|
-
|
|
2487
|
-
this.irreg_conjugations.set("piget", (args: ArgMap, data: ConjugationData, typeinfo: ConjugationInfo) => {
|
|
2488
|
-
data.categories.push("Latin second conjugation verbs");
|
|
2489
|
-
data.categories.push("Latin impersonal verbs");
|
|
2490
|
-
data.categories.push("Latin semi-deponent verbs");
|
|
2491
|
-
data.categories.push("Latin defective verbs");
|
|
2492
|
-
|
|
2493
|
-
const prefix = typeinfo.prefix;
|
|
2494
|
-
|
|
2495
|
-
setVerbForm(data.forms, "3s_pres_actv_indc", [prefix + "piget"]);
|
|
2496
|
-
setVerbForm(data.forms, "3s_impf_actv_indc", [prefix + "pigēbat"]);
|
|
2497
|
-
setVerbForm(data.forms, "3s_futr_actv_indc", [prefix + "pigēbit"]);
|
|
2498
|
-
setVerbForm(data.forms, "3s_perf_actv_indc", [prefix + "piguit", prefix + "pigitum [[esse|est]]"]);
|
|
2499
|
-
setVerbForm(data.forms, "3s_plup_actv_indc", [prefix + "piguerat", prefix + "pigitum [[esse|erat]]"]);
|
|
2500
|
-
setVerbForm(data.forms, "3s_futp_actv_indc", [prefix + "piguerit", prefix + "pigitum [[esse|erit]]"]);
|
|
2501
|
-
setVerbForm(data.forms, "3s_pres_actv_subj", [prefix + "pigeat"]);
|
|
2502
|
-
setVerbForm(data.forms, "3s_impf_actv_subj", [prefix + "pigēret"]);
|
|
2503
|
-
setVerbForm(data.forms, "3s_perf_actv_subj", [prefix + "piguerit", prefix + "pigitum [[esse|sit]]"]);
|
|
2504
|
-
setVerbForm(data.forms, "3s_plup_actv_subj", [prefix + "piguisset", prefix + "pigitum [[esse|esset]]"]);
|
|
2505
|
-
setVerbForm(data.forms, "pres_actv_inf", [prefix + "pigēre"]);
|
|
2506
|
-
setVerbForm(data.forms, "perf_actv_inf", [prefix + "pigitum [[esse|esse]]"]);
|
|
2507
|
-
setVerbForm(data.forms, "pres_actv_ptc", [prefix + "pigēns"]);
|
|
2508
|
-
setVerbForm(data.forms, "perf_actv_ptc", [prefix + "pigitum"]);
|
|
2509
|
-
|
|
2510
|
-
this.make_gerund(data, typeinfo, prefix + "pigend");
|
|
2511
|
-
});
|
|
2512
|
-
|
|
2513
|
-
this.irreg_conjugations.set("coepi", (args: ArgMap, data: ConjugationData, typeinfo: ConjugationInfo) => {
|
|
2514
|
-
data.categories.push("Latin third conjugation verbs");
|
|
2515
|
-
data.categories.push("Latin verbs with missing present stem");
|
|
2516
|
-
data.categories.push("Latin defective verbs");
|
|
2517
|
-
|
|
2518
|
-
const prefix = typeinfo.prefix;
|
|
2519
|
-
|
|
2520
|
-
this.make_perf(data, [prefix + "coep"]);
|
|
2521
|
-
this.make_supine(data, typeinfo, [prefix + "coept"]);
|
|
2522
|
-
this.make_perfect_passive(data);
|
|
2523
|
-
});
|
|
2524
|
-
|
|
2525
|
-
this.irreg_conjugations.set("sum", (args: ArgMap, data: ConjugationData, typeinfo: ConjugationInfo) => {
|
|
2526
|
-
data.categories.push("Latin irregular verbs");
|
|
2527
|
-
data.categories.push("Latin suppletive verbs");
|
|
2528
|
-
|
|
2529
|
-
const prefix = typeinfo.prefix;
|
|
2530
|
-
const prefix_e = this.ine(args.get("3")) || prefix;
|
|
2531
|
-
const prefix_f = this.lengthen_prefix(this.ine(args.get("4")) || prefix);
|
|
2532
|
-
const prefix_s = this.lengthen_prefix(prefix);
|
|
2533
|
-
|
|
2534
|
-
addVerbType(typeinfo.subtypes, "nopass");
|
|
2535
|
-
addVerbType(typeinfo.subtypes, "supfutractvonly");
|
|
2536
|
-
|
|
2537
|
-
this.make_perf(data, [prefix_f + "fu"]);
|
|
2538
|
-
this.make_supine(data, typeinfo, [prefix_f + "fut"]);
|
|
2539
|
-
|
|
2540
|
-
setVerbForm(data.forms, "1s_pres_actv_indc", [prefix_s + "sum"]);
|
|
2541
|
-
setVerbForm(data.forms, "2s_pres_actv_indc", [prefix_e + "es"]);
|
|
2542
|
-
setVerbForm(data.forms, "3s_pres_actv_indc", [prefix_e + "est"]);
|
|
2543
|
-
setVerbForm(data.forms, "1p_pres_actv_indc", [prefix_s + "sumus"]);
|
|
2544
|
-
setVerbForm(data.forms, "2p_pres_actv_indc", [prefix_e + "estis"]);
|
|
2545
|
-
setVerbForm(data.forms, "3p_pres_actv_indc", [prefix_s + "sunt"]);
|
|
2546
|
-
|
|
2547
|
-
setVerbForm(data.forms, "1s_impf_actv_indc", [prefix_e + "eram"]);
|
|
2548
|
-
setVerbForm(data.forms, "2s_impf_actv_indc", [prefix_e + "erās"]);
|
|
2549
|
-
setVerbForm(data.forms, "3s_impf_actv_indc", [prefix_e + "erat"]);
|
|
2550
|
-
setVerbForm(data.forms, "1p_impf_actv_indc", [prefix_e + "erāmus"]);
|
|
2551
|
-
setVerbForm(data.forms, "2p_impf_actv_indc", [prefix_e + "erātis"]);
|
|
2552
|
-
setVerbForm(data.forms, "3p_impf_actv_indc", [prefix_e + "erant"]);
|
|
2553
|
-
|
|
2554
|
-
setVerbForm(data.forms, "1s_futr_actv_indc", [prefix_e + "erō"]);
|
|
2555
|
-
setVerbForm(data.forms, "2s_futr_actv_indc", [prefix_e + "eris", prefix_e + "ere"]);
|
|
2556
|
-
setVerbForm(data.forms, "3s_futr_actv_indc", [prefix_e + "erit"]);
|
|
2557
|
-
setVerbForm(data.forms, "1p_futr_actv_indc", [prefix_e + "erimus"]);
|
|
2558
|
-
setVerbForm(data.forms, "2p_futr_actv_indc", [prefix_e + "eritis"]);
|
|
2559
|
-
setVerbForm(data.forms, "3p_futr_actv_indc", [prefix_e + "erunt"]);
|
|
2560
|
-
|
|
2561
|
-
setVerbForm(data.forms, "1s_pres_actv_subj", [prefix_s + "sim"]);
|
|
2562
|
-
setVerbForm(data.forms, "2s_pres_actv_subj", [prefix_s + "sīs"]);
|
|
2563
|
-
setVerbForm(data.forms, "3s_pres_actv_subj", [prefix_s + "sit"]);
|
|
2564
|
-
setVerbForm(data.forms, "1p_pres_actv_subj", [prefix_s + "sīmus"]);
|
|
2565
|
-
setVerbForm(data.forms, "2p_pres_actv_subj", [prefix_s + "sītis"]);
|
|
2566
|
-
setVerbForm(data.forms, "3p_pres_actv_subj", [prefix_s + "sint"]);
|
|
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
|
-
|
|
2573
|
-
setVerbForm(data.forms, "1s_impf_actv_subj", [prefix_e + "essem", prefix_f + "forem"]);
|
|
2574
|
-
setVerbForm(data.forms, "2s_impf_actv_subj", [prefix_e + "essēs", prefix_f + "forēs"]);
|
|
2575
|
-
setVerbForm(data.forms, "3s_impf_actv_subj", [prefix_e + "esset", prefix_f + "foret"]);
|
|
2576
|
-
setVerbForm(data.forms, "1p_impf_actv_subj", [prefix_e + "essēmus", prefix_f + "forēmus"]);
|
|
2577
|
-
setVerbForm(data.forms, "2p_impf_actv_subj", [prefix_e + "essētis", prefix_f + "forētis"]);
|
|
2578
|
-
setVerbForm(data.forms, "3p_impf_actv_subj", [prefix_e + "essent", prefix_f + "forent"]);
|
|
2579
|
-
|
|
2580
|
-
setVerbForm(data.forms, "2s_pres_actv_impr", [prefix_e + "es"]);
|
|
2581
|
-
setVerbForm(data.forms, "2p_pres_actv_impr", [prefix_e + "este"]);
|
|
2582
|
-
|
|
2583
|
-
setVerbForm(data.forms, "2s_futr_actv_impr", [prefix_e + "estō"]);
|
|
2584
|
-
setVerbForm(data.forms, "3s_futr_actv_impr", [prefix_e + "estō"]);
|
|
2585
|
-
setVerbForm(data.forms, "2p_futr_actv_impr", [prefix_e + "estōte"]);
|
|
2586
|
-
setVerbForm(data.forms, "3p_futr_actv_impr", [prefix_s + "suntō"]);
|
|
2587
|
-
|
|
2588
|
-
setVerbForm(data.forms, "pres_actv_inf", [prefix_e + "esse"]);
|
|
2589
|
-
|
|
2590
|
-
setVerbForm(data.forms, "futr_actv_inf", [prefix_f + "futūrum [[esse|esse]]", prefix_f + "fore"]);
|
|
2591
|
-
|
|
2592
|
-
if (prefix == "ab") {
|
|
2593
|
-
setVerbForm(data.forms, "pres_actv_ptc", ["absēns"]);
|
|
2594
|
-
} else if (prefix == "prae") {
|
|
2595
|
-
setVerbForm(data.forms, "pres_actv_ptc", ["praesēns"]);
|
|
2596
|
-
}
|
|
2597
|
-
|
|
2598
|
-
setVerbForm(data.forms, "ger_gen", []);
|
|
2599
|
-
setVerbForm(data.forms, "ger_dat", []);
|
|
2600
|
-
setVerbForm(data.forms, "ger_acc", []);
|
|
2601
|
-
setVerbForm(data.forms, "ger_abl", []);
|
|
2602
|
-
|
|
2603
|
-
setVerbForm(data.forms, "sup_acc", []);
|
|
2604
|
-
setVerbForm(data.forms, "sup_abl", []);
|
|
2605
|
-
});
|
|
2606
|
-
}
|
|
2607
|
-
|
|
2608
|
-
private lengthen_prefix(prefix: string) {
|
|
2609
|
-
prefix = prefix.replace(/an$/, "ān");
|
|
2610
|
-
prefix = prefix.replace(/en$/, "ēn");
|
|
2611
|
-
prefix = prefix.replace(/in$/, "īn");
|
|
2612
|
-
prefix = prefix.replace(/on$/, "ōn");
|
|
2613
|
-
prefix = prefix.replace(/un$/, "ūn");
|
|
2614
|
-
|
|
2615
|
-
return prefix;
|
|
2616
|
-
}
|
|
2617
|
-
|
|
2618
|
-
private volo_malo_nolo(data: ConjugationData, indc_stem: string, subj_stem: string) {
|
|
2619
|
-
this.add_forms(data, "impf_actv_indc", indc_stem + "ēb", "am", "ās", "at", "āmus", "ātis", "ant");
|
|
2620
|
-
this.add_forms(data, "futr_actv_indc", indc_stem, "am", "ēs", "et", "ēmus", "ētis", "ent");
|
|
2621
|
-
|
|
2622
|
-
this.add_forms(data, "pres_actv_subj", subj_stem, "im", "īs", "it", "īmus", "ītis", "int");
|
|
2623
|
-
this.add_forms(data, "impf_actv_subj", subj_stem + "l", "em", "ēs", "et", "ēmus", "ētis", "ent");
|
|
2624
|
-
|
|
2625
|
-
setVerbForm(data.forms, "pres_actv_inf", [subj_stem + "le"]);
|
|
2626
|
-
setVerbForm(data.forms, "pres_actv_ptc", [indc_stem + "ēns"]);
|
|
2627
|
-
|
|
2628
|
-
}
|
|
2629
|
-
|
|
2630
|
-
private libet_lubet(data: ConjugationData, typeinfo: ConjugationInfo, stem: string) {
|
|
2631
|
-
data.categories.push("Latin second conjugation verbs");
|
|
2632
|
-
data.categories.push("Latin impersonal verbs");
|
|
2633
|
-
|
|
2634
|
-
addVerbType(typeinfo.subtypes, "nopass");
|
|
2635
|
-
|
|
2636
|
-
const prefix = typeinfo.prefix;
|
|
2637
|
-
stem = prefix + stem;
|
|
2638
|
-
|
|
2639
|
-
setVerbForm(data.forms, "3s_pres_actv_indc", [stem + "et"]);
|
|
2640
|
-
setVerbForm(data.forms, "3s_impf_actv_indc", [stem + "ēbat"]);
|
|
2641
|
-
setVerbForm(data.forms, "3s_futr_actv_indc", [stem + "ēbit"]);
|
|
2642
|
-
setVerbForm(data.forms, "3s_perf_actv_indc", [stem + "uit", stem + "itum [[esse|est]]"]);
|
|
2643
|
-
setVerbForm(data.forms, "3s_plup_actv_indc", [stem + "uerat", stem + "itum [[esse|erat]]"]);
|
|
2644
|
-
setVerbForm(data.forms, "3s_futp_actv_indc", [stem + "uerit", stem + "itum [[esse|erit]]"]);
|
|
2645
|
-
setVerbForm(data.forms, "3s_pres_actv_subj", [stem + "eat"]);
|
|
2646
|
-
setVerbForm(data.forms, "3s_impf_actv_subj", [stem + "ēret"]);
|
|
2647
|
-
setVerbForm(data.forms, "3s_perf_actv_subj", [stem + "uerit", stem + "itum [[esse|sit]]"]);
|
|
2648
|
-
setVerbForm(data.forms, "3s_plup_actv_subj", [stem + "uisset", stem + "itum [[esse|esset]]"]);
|
|
2649
|
-
setVerbForm(data.forms, "3p_plup_actv_subj", [stem + "uissent"]);
|
|
2650
|
-
setVerbForm(data.forms, "pres_actv_inf", [stem + "ēre"]);
|
|
2651
|
-
setVerbForm(data.forms, "perf_actv_inf", [stem + "uisse", stem + "itum [[esse|esse]]"]);
|
|
2652
|
-
setVerbForm(data.forms, "pres_actv_ptc", [stem + "ēns"]);
|
|
2653
|
-
setVerbForm(data.forms, "perf_actv_ptc", [stem + "itum"]);
|
|
2654
|
-
}
|
|
2655
|
-
|
|
2656
|
-
private fio(data: ConjugationData, prefix: string, voice: string) {
|
|
2657
|
-
this.add_forms(data, "pres_" + voice + "_indc", prefix, "fīō", "fīs", "fit", "fīmus", "fītis", "fīunt");
|
|
2658
|
-
this.add_forms(data, "impf_" + voice + "_indc", prefix + "fīēb", "am", "ās", "at", "āmus", "ātis", "ant");
|
|
2659
|
-
this.add_forms(data, "futr_" + voice + "_indc", prefix + "fī", "am", "ēs", "et", "ēmus", "ētis", "ent");
|
|
2660
|
-
|
|
2661
|
-
this.add_forms(data, "pres_" + voice + "_subj", prefix + "fī", "am", "ās", "at", "āmus", "ātis", "ant");
|
|
2662
|
-
this.add_forms(data, "impf_" + voice + "_subj", prefix + "fier", "em", "ēs", "et", "ēmus", "ētis", "ent");
|
|
2663
|
-
|
|
2664
|
-
this.add_2_forms(data, "pres_" + voice + "_impr", prefix + "fī", "", "te");
|
|
2665
|
-
this.add_23_forms(data, "futr_" + voice + "_impr", prefix + "fī", "tō", "tō", "tōte", "untō");
|
|
2666
|
-
|
|
2667
|
-
this.add_form(data, "pres_" + voice + "_inf", prefix, "fierī");
|
|
2668
|
-
}
|
|
2669
|
-
}
|