@fpw/en-wiktionary-la-modules 0.0.16 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/dist/LaEngine.d.ts +7 -8
  2. package/dist/LaEngine.js +1 -1
  3. package/dist/LaEngine.js.map +1 -1
  4. package/dist/modules/conjugation/LaVerb.d.ts +5 -3
  5. package/dist/modules/conjugation/LaVerb.js +207 -31
  6. package/dist/modules/conjugation/LaVerb.js.map +1 -1
  7. package/dist/modules/conjugation/VerbType.d.ts +5 -1
  8. package/dist/modules/conjugation/VerbType.js +4 -0
  9. package/dist/modules/conjugation/VerbType.js.map +1 -1
  10. package/dist/modules/declination/LaAdjData.d.ts +1 -1
  11. package/dist/modules/declination/LaAdjData.js +45 -24
  12. package/dist/modules/declination/LaAdjData.js.map +1 -1
  13. package/dist/modules/declination/LaNominal.d.ts +6 -3
  14. package/dist/modules/declination/LaNominal.js +190 -168
  15. package/dist/modules/declination/LaNominal.js.map +1 -1
  16. package/dist/modules/declination/LaNounData.js +65 -64
  17. package/dist/modules/declination/LaNounData.js.map +1 -1
  18. package/dist/modules/declination/LaPersonalPronoun.d.ts +7 -29
  19. package/dist/modules/declination/LaPersonalPronoun.js +73 -56
  20. package/dist/modules/declination/LaPersonalPronoun.js.map +1 -1
  21. package/dist/modules/declination/NominalType.d.ts +116 -0
  22. package/dist/modules/declination/NominalType.js +142 -0
  23. package/dist/modules/declination/NominalType.js.map +1 -0
  24. package/dist/modules/headword/HeadWord.d.ts +3 -3
  25. package/dist/modules/headword/HeadwordParser.d.ts +2 -2
  26. package/dist/modules/headword/HeadwordParser.js.map +1 -1
  27. package/package.json +8 -9
  28. package/src/LaEngine.ts +8 -9
  29. package/src/modules/conjugation/LaVerb.ts +213 -36
  30. package/src/modules/conjugation/VerbType.ts +4 -0
  31. package/src/modules/declination/LaAdjData.ts +47 -24
  32. package/src/modules/declination/LaNominal.ts +216 -184
  33. package/src/modules/declination/LaNounData.ts +67 -66
  34. package/src/modules/declination/LaPersonalPronoun.ts +76 -63
  35. package/src/modules/declination/NominalType.ts +153 -0
  36. package/src/modules/headword/HeadWord.ts +3 -3
  37. package/src/modules/headword/HeadwordParser.ts +18 -18
@@ -1,9 +1,8 @@
1
- import { ConjOptions, Conjugation } from "./modules/conjugation/LaVerb";
1
+ import { ConjOptions, VerbData } from "./modules/conjugation/LaVerb";
2
2
  import { NounData, AdjectiveData, DeclOptions } from "./modules/declination/LaNominal";
3
3
  import { PersonalPronounData } from "./modules/declination/LaPersonalPronoun";
4
- import { Headword } from "./modules/headword/HeadWord";
5
- export declare type FormData = NounData | AdjectiveData | Conjugation | PersonalPronounData;
6
- export declare type TemplateData = FormData | Headword;
4
+ import { HeadwordData } from "./modules/headword/HeadWord";
5
+ export declare type InflectionData = NounData | AdjectiveData | VerbData | PersonalPronounData;
7
6
  export interface EngineOptions {
8
7
  verbOptions?: ConjOptions;
9
8
  nominalOptions?: DeclOptions;
@@ -17,8 +16,8 @@ export declare class LaEngine {
17
16
  decline_noun(template: string): NounData;
18
17
  decline_gerund(template: string): NounData;
19
18
  decline_adjective(template: string): AdjectiveData;
20
- conjugate_verb(template: string): Conjugation;
21
- parse_headword(template: string, lemma: string): Headword;
22
- parse_word(template: string): FormData;
23
- parse_template(template: string, lemma: string): TemplateData;
19
+ conjugate_verb(template: string): VerbData;
20
+ parse_headword(template: string, lemma: string): HeadwordData;
21
+ parse_word(template: string): InflectionData;
22
+ parse_template(template: string, lemma: string): InflectionData | HeadwordData;
24
23
  }
package/dist/LaEngine.js CHANGED
@@ -48,7 +48,7 @@ class LaEngine {
48
48
  case "la-decl-gerund":
49
49
  return this.decline_gerund(template);
50
50
  case "la-decl-ppron":
51
- return this.ppron.make_data();
51
+ return this.ppron.make_data(args);
52
52
  default:
53
53
  throw Error(`Unknown template ${templateName}`);
54
54
  }
@@ -1 +1 @@
1
- {"version":3,"file":"LaEngine.js","sourceRoot":"","sources":["../src/LaEngine.ts"],"names":[],"mappings":";;;AAAA,6CAAkD;AAClD,yDAAgF;AAChF,+DAAkG;AAClG,+EAAiG;AAEjG,sEAAmE;AAUnE,MAAa,QAAQ;IAMjB,YAAmB,OAAuB;QAHlC,UAAK,GAAG,IAAI,qCAAiB,EAAE,CAAC;QAIpC,IAAI,CAAC,IAAI,GAAG,IAAI,eAAM,CAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW,CAAC,CAAC;QAC7C,IAAI,CAAC,OAAO,GAAG,IAAI,qBAAS,CAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,cAAc,CAAC,CAAC;QACtD,IAAI,CAAC,QAAQ,GAAG,IAAI,+BAAc,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAChE,CAAC;IAEM,YAAY,CAAC,QAAgB;QAChC,MAAM,IAAI,GAAG,IAAA,uBAAc,EAAC,QAAQ,CAAC,CAAC;QACtC,OAAO,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;IACrD,CAAC;IAEM,cAAc,CAAC,QAAgB;QAClC,MAAM,IAAI,GAAG,IAAA,uBAAc,EAAC,QAAQ,CAAC,CAAC;QACtC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAE7B,MAAM,cAAc,GAAG,cAAc,MAAM,4BAA4B,CAAC;QACxE,MAAM,UAAU,GAAG,IAAA,uBAAc,EAAC,cAAc,CAAC,CAAC;QAClD,OAAO,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IACtE,CAAC;IAEM,iBAAiB,CAAC,QAAgB;QACrC,MAAM,IAAI,GAAG,IAAA,uBAAc,EAAC,QAAQ,CAAC,CAAC;QACtC,OAAO,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;IACpD,CAAC;IAEM,cAAc,CAAC,QAAgB;QAClC,MAAM,IAAI,GAAG,IAAA,uBAAc,EAAC,QAAQ,CAAC,CAAC;QACtC,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC;IAEM,cAAc,CAAC,QAAgB,EAAE,KAAa;QACjD,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAChD,CAAC;IAEM,UAAU,CAAC,QAAgB;QAC9B,MAAM,IAAI,GAAG,IAAA,uBAAc,EAAC,QAAQ,CAAC,CAAC;QACtC,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QAEzC,QAAQ,YAAY,EAAE;YAClB,KAAK,SAAS;gBACV,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YACrC,KAAK,UAAU;gBACX,OAAO,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;YACrD,KAAK,UAAU;gBACX,OAAO,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;YACpD,KAAK,gBAAgB;gBACjB,OAAO,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;YACzC,KAAK,eAAe;gBAChB,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;YAClC;gBACI,MAAM,KAAK,CAAC,oBAAoB,YAAY,EAAE,CAAC,CAAC;SACvD;IACL,CAAC;IAEM,cAAc,CAAC,QAAgB,EAAE,KAAa;QACjD,IAAI,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,QAAQ,CAAC,EAAE;YAC5C,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;SAC/C;aAAM;YACH,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;SACpC;IACL,CAAC;CACJ;AAnED,4BAmEC"}
1
+ {"version":3,"file":"LaEngine.js","sourceRoot":"","sources":["../src/LaEngine.ts"],"names":[],"mappings":";;;AAAA,6CAAkD;AAClD,yDAA6E;AAC7E,+DAAkG;AAClG,+EAAiG;AAEjG,sEAAmE;AASnE,MAAa,QAAQ;IAMjB,YAAmB,OAAuB;QAHlC,UAAK,GAAG,IAAI,qCAAiB,EAAE,CAAC;QAIpC,IAAI,CAAC,IAAI,GAAG,IAAI,eAAM,CAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW,CAAC,CAAC;QAC7C,IAAI,CAAC,OAAO,GAAG,IAAI,qBAAS,CAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,cAAc,CAAC,CAAC;QACtD,IAAI,CAAC,QAAQ,GAAG,IAAI,+BAAc,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAChE,CAAC;IAEM,YAAY,CAAC,QAAgB;QAChC,MAAM,IAAI,GAAG,IAAA,uBAAc,EAAC,QAAQ,CAAC,CAAC;QACtC,OAAO,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;IACrD,CAAC;IAEM,cAAc,CAAC,QAAgB;QAClC,MAAM,IAAI,GAAG,IAAA,uBAAc,EAAC,QAAQ,CAAC,CAAC;QACtC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAE7B,MAAM,cAAc,GAAG,cAAc,MAAM,4BAA4B,CAAC;QACxE,MAAM,UAAU,GAAG,IAAA,uBAAc,EAAC,cAAc,CAAC,CAAC;QAClD,OAAO,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IACtE,CAAC;IAEM,iBAAiB,CAAC,QAAgB;QACrC,MAAM,IAAI,GAAG,IAAA,uBAAc,EAAC,QAAQ,CAAC,CAAC;QACtC,OAAO,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;IACpD,CAAC;IAEM,cAAc,CAAC,QAAgB;QAClC,MAAM,IAAI,GAAG,IAAA,uBAAc,EAAC,QAAQ,CAAC,CAAC;QACtC,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC;IAEM,cAAc,CAAC,QAAgB,EAAE,KAAa;QACjD,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAChD,CAAC;IAEM,UAAU,CAAC,QAAgB;QAC9B,MAAM,IAAI,GAAG,IAAA,uBAAc,EAAC,QAAQ,CAAC,CAAC;QACtC,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QAEzC,QAAQ,YAAY,EAAE;YAClB,KAAK,SAAS;gBACV,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YACrC,KAAK,UAAU;gBACX,OAAO,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;YACrD,KAAK,UAAU;gBACX,OAAO,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;YACpD,KAAK,gBAAgB;gBACjB,OAAO,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;YACzC,KAAK,eAAe;gBAChB,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YACtC;gBACI,MAAM,KAAK,CAAC,oBAAoB,YAAY,EAAE,CAAC,CAAC;SACvD;IACL,CAAC;IAEM,cAAc,CAAC,QAAgB,EAAE,KAAa;QACjD,IAAI,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,QAAQ,CAAC,EAAE;YAC5C,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;SAC/C;aAAM;YACH,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;SACpC;IACL,CAAC;CACJ;AAnED,4BAmEC"}
@@ -5,7 +5,7 @@
5
5
  * A few new options to suppress certain rate forms were added.
6
6
  *
7
7
  * Original source: https://en.wiktionary.org/wiki/Module:la-verb
8
- * Based on version: https://en.wiktionary.org/w/index.php?title=Module:la-verb&oldid=63102127
8
+ * Based on version: https://en.wiktionary.org/w/index.php?title=Module:la-verb&oldid=67964189
9
9
  *
10
10
  * Lua idioms, function and variable names kept as in the original in order to easily
11
11
  * backport later changes to this implementation.
@@ -26,8 +26,9 @@ export interface ConjOptions {
26
26
  suppressIPerfect?: boolean;
27
27
  suppressPoet?: boolean;
28
28
  ireWithShortPerfInf?: boolean;
29
+ reorderEdere?: boolean;
29
30
  }
30
- export interface Conjugation {
31
+ export interface VerbData {
31
32
  templateType: "conjugation";
32
33
  info: ConjugationInfo;
33
34
  data: ConjugationData;
@@ -61,7 +62,7 @@ export declare class LaVerb {
61
62
  private irreg_conjugations;
62
63
  private options;
63
64
  constructor(options?: ConjOptions);
64
- make_data(args: ArgMap): Conjugation;
65
+ make_data(args: ArgMap): VerbData;
65
66
  static get_valid_forms(raw_forms: string[] | undefined): string[];
66
67
  static get_lemma_forms(data: ConjugationData, do_linked: boolean): string[];
67
68
  private setup_conjs;
@@ -97,6 +98,7 @@ export declare class LaVerb {
97
98
  private make_perfect_passive;
98
99
  private override;
99
100
  private add_prefix_suffix;
101
+ private notes_override;
100
102
  private set_linked_forms;
101
103
  private setup_irreg_conjs;
102
104
  private lengthen_prefix;
@@ -8,7 +8,7 @@ exports.LaVerb = void 0;
8
8
  * A few new options to suppress certain rate forms were added.
9
9
  *
10
10
  * Original source: https://en.wiktionary.org/wiki/Module:la-verb
11
- * Based on version: https://en.wiktionary.org/w/index.php?title=Module:la-verb&oldid=63102127
11
+ * Based on version: https://en.wiktionary.org/w/index.php?title=Module:la-verb&oldid=67964189
12
12
  *
13
13
  * Lua idioms, function and variable names kept as in the original in order to easily
14
14
  * backport later changes to this implementation.
@@ -75,6 +75,7 @@ class LaVerb {
75
75
  "np",
76
76
  "highlydef",
77
77
  "sigm",
78
+ "sigmpasv",
78
79
  ]);
79
80
  this.conjugations = new Map();
80
81
  this.irreg_conjugations = new Map();
@@ -182,6 +183,7 @@ class LaVerb {
182
183
  this.override(data, args);
183
184
  this.set_linked_forms(data, typeinfo);
184
185
  this.add_prefix_suffix(data);
186
+ this.notes_override(data, args);
185
187
  return {
186
188
  templateType: "conjugation",
187
189
  info: typeinfo,
@@ -264,6 +266,70 @@ class LaVerb {
264
266
  }
265
267
  this.make_pres_3rd(data, typeinfo, typeinfo.pres_stem);
266
268
  this.make_perf_and_supine(data, typeinfo);
269
+ if (typeinfo.pres_stem.match(/nōsc/)) {
270
+ const sub = (str, x, y) => {
271
+ return str.substring(x - 1, str.length + y + 1);
272
+ };
273
+ this.add_form(data, "2s_perf_actv_indc", "", sub(typeinfo.perf_stem[0], 1, -2) + "stī", 2);
274
+ this.add_form(data, "1p_perf_actv_indc", "", sub(typeinfo.perf_stem[0], 1, -2) + "mus", 2);
275
+ this.add_form(data, "2p_perf_actv_indc", "", sub(typeinfo.perf_stem[0], 1, -2) + "stis", 2);
276
+ this.add_form(data, "3p_perf_actv_indc", "", sub(typeinfo.perf_stem[0], 1, -2) + "runt", 3);
277
+ this.add_form(data, "1s_plup_actv_indc", "", sub(typeinfo.perf_stem[0], 1, -2) + "ram", 2);
278
+ this.add_form(data, "2s_plup_actv_indc", "", sub(typeinfo.perf_stem[0], 1, -2) + "rās", 2);
279
+ this.add_form(data, "3s_plup_actv_indc", "", sub(typeinfo.perf_stem[0], 1, -2) + "rat", 2);
280
+ this.add_form(data, "1p_plup_actv_indc", "", sub(typeinfo.perf_stem[0], 1, -2) + "rāmus", 2);
281
+ this.add_form(data, "2p_plup_actv_indc", "", sub(typeinfo.perf_stem[0], 1, -2) + "rātis", 2);
282
+ this.add_form(data, "3p_plup_actv_indc", "", sub(typeinfo.perf_stem[0], 1, -2) + "rant", 2);
283
+ this.add_form(data, "1s_futp_actv_indc", "", sub(typeinfo.perf_stem[0], 1, -2) + "rō", 2);
284
+ this.add_form(data, "2s_futp_actv_indc", "", sub(typeinfo.perf_stem[0], 1, -2) + "ris", 2);
285
+ this.add_form(data, "3s_futp_actv_indc", "", sub(typeinfo.perf_stem[0], 1, -2) + "rit", 2);
286
+ this.add_form(data, "1p_futp_actv_indc", "", sub(typeinfo.perf_stem[0], 1, -2) + "rimus", 2);
287
+ this.add_form(data, "2p_futp_actv_indc", "", sub(typeinfo.perf_stem[0], 1, -2) + "ritis", 2);
288
+ this.add_form(data, "3p_futp_actv_indc", "", sub(typeinfo.perf_stem[0], 1, -2) + "rint", 2);
289
+ this.add_form(data, "1s_perf_actv_subj", "", sub(typeinfo.perf_stem[0], 1, -2) + "rim", 2);
290
+ this.add_form(data, "2s_perf_actv_subj", "", sub(typeinfo.perf_stem[0], 1, -2) + "rīs", 2);
291
+ this.add_form(data, "3s_perf_actv_subj", "", sub(typeinfo.perf_stem[0], 1, -2) + "rit", 2);
292
+ this.add_form(data, "1p_perf_actv_subj", "", sub(typeinfo.perf_stem[0], 1, -2) + "rīmus", 2);
293
+ this.add_form(data, "2p_perf_actv_subj", "", sub(typeinfo.perf_stem[0], 1, -2) + "rītis", 2);
294
+ this.add_form(data, "3p_perf_actv_subj", "", sub(typeinfo.perf_stem[0], 1, -2) + "rint", 2);
295
+ this.add_form(data, "1s_plup_actv_subj", "", sub(typeinfo.perf_stem[0], 1, -2) + "ssem", 2);
296
+ this.add_form(data, "2s_plup_actv_subj", "", sub(typeinfo.perf_stem[0], 1, -2) + "ssēs", 2);
297
+ this.add_form(data, "3s_plup_actv_subj", "", sub(typeinfo.perf_stem[0], 1, -2) + "sset", 2);
298
+ this.add_form(data, "1p_plup_actv_subj", "", sub(typeinfo.perf_stem[0], 1, -2) + "ssēmus", 2);
299
+ this.add_form(data, "2p_plup_actv_subj", "", sub(typeinfo.perf_stem[0], 1, -2) + "ssētis", 2);
300
+ this.add_form(data, "3p_plup_actv_subj", "", sub(typeinfo.perf_stem[0], 1, -2) + "ssent", 2);
301
+ this.add_form(data, "perf_actv_inf", "", sub(typeinfo.perf_stem[0], 1, -2) + "sse", 2);
302
+ const note = "The verb \"nōscō\" and its compounds frequently drop the syllables \"vi\" and \"ve\" from their perfect, pluperfect and future perfect conjugations.";
303
+ data.footnotes.set("2s_perf_actv_indc", [note]);
304
+ data.footnotes.set("1p_perf_actv_indc", [note]);
305
+ data.footnotes.set("2p_perf_actv_indc", [note]);
306
+ data.footnotes.set("3p_perf_actv_indc", [note]);
307
+ data.footnotes.set("1s_plup_actv_indc", [note]);
308
+ data.footnotes.set("2s_plup_actv_indc", [note]);
309
+ data.footnotes.set("3s_plup_actv_indc", [note]);
310
+ data.footnotes.set("1p_plup_actv_indc", [note]);
311
+ data.footnotes.set("2p_plup_actv_indc", [note]);
312
+ data.footnotes.set("3p_plup_actv_indc", [note]);
313
+ data.footnotes.set("1s_futp_actv_indc", [note]);
314
+ data.footnotes.set("2s_futp_actv_indc", [note]);
315
+ data.footnotes.set("3s_futp_actv_indc", [note]);
316
+ data.footnotes.set("1p_futp_actv_indc", [note]);
317
+ data.footnotes.set("2p_futp_actv_indc", [note]);
318
+ data.footnotes.set("3p_futp_actv_indc", [note]);
319
+ data.footnotes.set("1s_perf_actv_subj", [note]);
320
+ data.footnotes.set("2s_perf_actv_subj", [note]);
321
+ data.footnotes.set("3s_perf_actv_subj", [note]);
322
+ data.footnotes.set("1p_perf_actv_subj", [note]);
323
+ data.footnotes.set("2p_perf_actv_subj", [note]);
324
+ data.footnotes.set("3p_perf_actv_subj", [note]);
325
+ data.footnotes.set("1s_plup_actv_subj", [note]);
326
+ data.footnotes.set("2s_plup_actv_subj", [note]);
327
+ data.footnotes.set("3s_plup_actv_subj", [note]);
328
+ data.footnotes.set("1p_plup_actv_subj", [note]);
329
+ data.footnotes.set("2p_plup_actv_subj", [note]);
330
+ data.footnotes.set("3p_plup_actv_subj", [note]);
331
+ data.footnotes.set("perf_actv_inf", [note]);
332
+ }
267
333
  });
268
334
  this.conjugations.set("3rd-io", (args, data, typeinfo) => {
269
335
  this.get_regular_stems(args, typeinfo);
@@ -492,6 +558,9 @@ class LaVerb {
492
558
  conj_arg = base_conj_arg;
493
559
  }
494
560
  }
561
+ if (orig_lemma.startsWith("-")) {
562
+ (0, VerbType_1.addVerbType)(subtypes, "suffix");
563
+ }
495
564
  let conjtype;
496
565
  let base = "";
497
566
  let auto_perf = "";
@@ -504,11 +573,21 @@ class LaVerb {
504
573
  ["ō", []],
505
574
  ["or", ["depon"]],
506
575
  ["at", ["impers"]],
507
- ["ātur", ["depon", "impers"]]
576
+ ["ātur", ["depon", "impers"]],
577
+ ["ī", ["perfaspres"]]
508
578
  ]));
509
579
  if (auto_perf_supine) {
510
- auto_perf = base + "āv";
511
- auto_supine = base + "āt";
580
+ if ((0, VerbType_1.hasVerbType)(subtypes, "perfaspres")) {
581
+ auto_perf = base;
582
+ }
583
+ else {
584
+ auto_perf = base + "āv";
585
+ auto_supine = base + "āt";
586
+ }
587
+ if ((0, VerbType_1.hasVerbType)(subtypes, "suffix")) {
588
+ (0, VerbType_1.addVerbType)(subtypes, "p3inf");
589
+ (0, VerbType_1.addVerbType)(subtypes, "sigmpasv");
590
+ }
512
591
  }
513
592
  }
514
593
  else if (conj_arg == "2") {
@@ -517,11 +596,20 @@ class LaVerb {
517
596
  ["eō", []],
518
597
  ["eor", ["depon"]],
519
598
  ["et", ["impers"]],
520
- ["ētur", ["depon", "impers"]]
599
+ ["ētur", ["depon", "impers"]],
600
+ ["ī", ["perfaspres"]]
521
601
  ]));
522
602
  if (auto_perf_supine) {
523
- auto_perf = base + "u";
524
- auto_supine = base + "it";
603
+ if ((0, VerbType_1.hasVerbType)(subtypes, "perfaspres")) {
604
+ auto_perf = base;
605
+ }
606
+ else {
607
+ auto_perf = base + "u";
608
+ auto_supine = base + "it";
609
+ }
610
+ }
611
+ if ((0, VerbType_1.hasVerbType)(subtypes, "suffix")) {
612
+ (0, VerbType_1.addVerbType)(subtypes, "sigmpasv");
525
613
  }
526
614
  }
527
615
  else if (conj_arg == "3") {
@@ -537,7 +625,8 @@ class LaVerb {
537
625
  ["ō", []],
538
626
  ["or", ["depon"]],
539
627
  ["it", ["impers"]],
540
- ["itur", ["depon", "impers"]]
628
+ ["itur", ["depon", "impers"]],
629
+ ["ī", ["perfaspres"]],
541
630
  ]));
542
631
  if ((0, VerbType_1.hasVerbType)(subtypes, "I")) {
543
632
  conjtype = "3rd-io";
@@ -546,6 +635,14 @@ class LaVerb {
546
635
  conjtype = "3rd";
547
636
  }
548
637
  }
638
+ if ((0, VerbType_1.hasVerbType)(subtypes, "perfaspres")) {
639
+ auto_perf = base;
640
+ }
641
+ if ((0, VerbType_1.hasVerbType)(subtypes, "suffix")) {
642
+ auto_perf = "-";
643
+ auto_supine = "-";
644
+ (0, VerbType_1.addVerbType)(subtypes, "sigmpasv");
645
+ }
549
646
  }
550
647
  else if (conj_arg == "4") {
551
648
  conjtype = "4th";
@@ -553,12 +650,13 @@ class LaVerb {
553
650
  ["iō", []],
554
651
  ["ior", ["depon"]],
555
652
  ["it", ["impers"]],
556
- ["ītur", ["depon", "impers"]]
653
+ ["ītur", ["depon", "impers"]],
654
+ ["ī", ["perfaspres"]]
557
655
  ]));
558
- if (auto_perf_supine == "++" && this.options.suppressIPerfect) {
559
- auto_perf_supine = "+";
656
+ if ((0, VerbType_1.hasVerbType)(subtypes, "perfaspres")) {
657
+ auto_perf = base;
560
658
  }
561
- if (auto_perf_supine == "++") {
659
+ else if (auto_perf_supine == "++") {
562
660
  auto_perf = base + "īv/" + base + "i";
563
661
  auto_supine = base + "īt";
564
662
  }
@@ -566,6 +664,9 @@ class LaVerb {
566
664
  auto_perf = base + "īv";
567
665
  auto_supine = base + "īt";
568
666
  }
667
+ if ((0, VerbType_1.hasVerbType)(subtypes, "suffix")) {
668
+ (0, VerbType_1.addVerbType)(subtypes, "sigm");
669
+ }
569
670
  }
570
671
  else if (conj_arg == "irreg") {
571
672
  let prefix;
@@ -617,13 +718,15 @@ class LaVerb {
617
718
  args.set("1", base);
618
719
  let perf_stem = "";
619
720
  let supine_stem = "";
620
- if ((0, VerbType_1.hasVerbType)(subtypes, "depon") || (0, VerbType_1.hasVerbType)(subtypes, "semidepon")) {
721
+ if ((0, VerbType_1.hasVerbType)(subtypes, "depon") || (0, VerbType_1.hasVerbType)(subtypes, "semidepon") || (0, VerbType_1.hasVerbType)(subtypes, "perfaspres")) {
621
722
  supine_stem = args.get("3") || auto_supine;
622
- if (supine_stem == "-") {
723
+ if (supine_stem == "-" && !(0, VerbType_1.hasVerbType)(subtypes, "suffix")) {
623
724
  supine_stem = "";
624
725
  }
625
726
  if (!supine_stem) {
626
- (0, VerbType_1.addVerbType)(subtypes, "noperf");
727
+ if ((0, VerbType_1.hasVerbType)(subtypes, "depon") || (0, VerbType_1.hasVerbType)(subtypes, "semidepon")) {
728
+ (0, VerbType_1.addVerbType)(subtypes, "noperf");
729
+ }
627
730
  (0, VerbType_1.addVerbType)(subtypes, "nosup");
628
731
  }
629
732
  args.set("2", supine_stem);
@@ -631,14 +734,14 @@ class LaVerb {
631
734
  }
632
735
  else {
633
736
  perf_stem = args.get("3") || auto_perf;
634
- if (perf_stem == "-") {
737
+ if (perf_stem == "-" && !(0, VerbType_1.hasVerbType)(subtypes, "suffix")) {
635
738
  perf_stem = "";
636
739
  }
637
740
  if (!perf_stem) {
638
741
  (0, VerbType_1.addVerbType)(subtypes, "noperf");
639
742
  }
640
743
  supine_stem = args.get("4") || auto_supine;
641
- if (supine_stem == "-") {
744
+ if (supine_stem == "-" && !(0, VerbType_1.hasVerbType)(subtypes, "suffix")) {
642
745
  supine_stem = "";
643
746
  }
644
747
  if (!supine_stem) {
@@ -657,7 +760,7 @@ class LaVerb {
657
760
  }
658
761
  for (const subtype of subtypes) {
659
762
  if (!this.allowed_subtypes.has(subtype)) {
660
- if (!(conjtype == "3rd" && subtype == "-I") && !(conjtype == "3rd-io" && subtype == "I")) {
763
+ if (!(conjtype == "3rd" && subtype == "-I") && !(conjtype == "3rd-io" && subtype == "I") && !(subtype == "suffix")) {
661
764
  throw Error(`Unrecognized verb subtype: ${subtype}`);
662
765
  }
663
766
  }
@@ -705,16 +808,22 @@ class LaVerb {
705
808
  supine_stem = this.ine(args.get("2"));
706
809
  perf_stem = this.ine(args.get("3")); // added by @fpw for reverti
707
810
  }
811
+ else if ((0, VerbType_1.hasVerbType)(typeinfo.subtypes, "perfaspres")) {
812
+ perf_stem = this.ine(args.get("1"));
813
+ supine_stem = this.ine(args.get("2"));
814
+ }
708
815
  else {
709
816
  pres_stem = this.ine(args.get("1"));
710
817
  perf_stem = this.ine(args.get("2"));
711
818
  supine_stem = this.ine(args.get("3"));
712
819
  }
713
- if ((0, VerbType_1.hasVerbType)(typeinfo.subtypes, "perfaspres") && !pres_stem) {
714
- pres_stem = "whatever";
715
- }
716
820
  if (!pres_stem) {
717
- throw Error("Present stem has not been provided");
821
+ if ((0, VerbType_1.hasVerbType)(typeinfo.subtypes, "perfaspres")) {
822
+ pres_stem = "-";
823
+ }
824
+ else {
825
+ throw Error("No present stem");
826
+ }
718
827
  }
719
828
  typeinfo.pres_stem = pres_stem;
720
829
  if (perf_stem) {
@@ -1113,7 +1222,7 @@ class LaVerb {
1113
1222
  endingMap.set("dat", endings.dat);
1114
1223
  endingMap.set("acc", endings.acc);
1115
1224
  endingMap.set("abl", endings.abl);
1116
- if (base.match(/[uv]end$/)) {
1225
+ if (base.match(/[uv]end$/) || (0, VerbType_1.hasVerbType)(typeinfo.subtypes, "nound")) {
1117
1226
  und_variant = false;
1118
1227
  }
1119
1228
  if (this.options.suppressUndVariants) {
@@ -1254,6 +1363,7 @@ class LaVerb {
1254
1363
  if ((0, VerbType_1.hasVerbType)(typeinfo.subtypes, "perfaspres")) {
1255
1364
  this.insert_if_not(data.categories, "Latin defective verbs");
1256
1365
  this.insert_if_not(data.categories, "Latin active-only verbs");
1366
+ this.insert_if_not(data.categories, "Latin verbs with missing present stem");
1257
1367
  this.insert_if_not(data.categories, "Latin verbs with perfect forms having imperfective meanings");
1258
1368
  (0, VerbForm_1.setVerbForm)(data.forms, "perf_actv_ptc", (0, VerbForm_1.getVerbForm)(data.forms, "perf_pasv_ptc") || []);
1259
1369
  (0, VerbForm_1.setVerbForm)(data.forms, "pres_actv_inf", (0, VerbForm_1.getVerbForm)(data.forms, "perf_actv_inf") || []);
@@ -1422,13 +1532,40 @@ class LaVerb {
1422
1532
  newvals.push(fv.replace(/^(.*).$/, "$1" + "ier"));
1423
1533
  }
1424
1534
  (0, VerbForm_1.setVerbForm)(data.forms, form, newvals);
1425
- data.footnotes.set(form, ["The present passive infinitive in -ier is a rare poetic form which is attested for this verb."]);
1535
+ data.footnotes.set(form, ["The present passive infinitive in -ier is a rare poetic form which is attested."]);
1426
1536
  }
1427
1537
  if ((0, VerbType_1.hasVerbType)(typeinfo.subtypes, "poetsyncperf") && !this.options.suppressPoet) {
1428
1538
  const sss = [
1539
+ // infinitive
1429
1540
  ["perf_actv_inf", "sse"],
1541
+ // perfect actives
1430
1542
  ["2s_perf_actv_indc", "stī"],
1543
+ ["3s_perf_actv_indc", "t"],
1544
+ ["1p_perf_actv_indc", "mus"],
1431
1545
  ["2p_perf_actv_indc", "stis"],
1546
+ ["3p_perf_actv_indc", "runt"],
1547
+ // pluperfect actives
1548
+ ["1s_plup_actv_indc", "ram"],
1549
+ ["2s_plup_actv_indc", "rās"],
1550
+ ["3s_plup_actv_indc", "rat"],
1551
+ ["1p_plup_actv_indc", "rāmus"],
1552
+ ["2p_plup_actv_indc", "rātis"],
1553
+ ["3p_plup_actv_indc", "rant"],
1554
+ // future perfect actives
1555
+ ["1s_futp_actv_indc", "rō"],
1556
+ ["2s_futp_actv_indc", "ris"],
1557
+ ["3s_futp_actv_indc", "rit"],
1558
+ ["1p_futp_actv_indc", "rimus"],
1559
+ ["2p_futp_actv_indc", "ritis"],
1560
+ ["3p_futp_actv_indc", "rint"],
1561
+ // perfect subjunctives
1562
+ ["1s_perf_actv_subj", "rim"],
1563
+ ["2s_perf_actv_subj", "rīs"],
1564
+ ["3s_perf_actv_subj", "rit"],
1565
+ ["1p_perf_actv_subj", "rīmus"],
1566
+ ["2p_perf_actv_subj", "rītis"],
1567
+ ["3p_perf_actv_subj", "rint"],
1568
+ // pluperfect subjunctive
1432
1569
  ["1s_plup_actv_subj", "ssem"],
1433
1570
  ["2s_plup_actv_subj", "ssēs"],
1434
1571
  ["3s_plup_actv_subj", "sset"],
@@ -1439,10 +1576,12 @@ class LaVerb {
1439
1576
  const add_sync_perf = (form, suff_sync) => {
1440
1577
  const formval = (0, VerbForm_1.getVerbForm)(data.forms, form) || [];
1441
1578
  for (const fv of formval) {
1442
- const regex1 = new RegExp(`vi${suff_sync}$`);
1443
- const regex2 = new RegExp(`[aeiouyāēīōūȳăĕĭŏŭ]ui${suff_sync}$`);
1444
- if (fv.match(regex1) || fv.match(regex2)) {
1445
- const rep = fv.substr(0, fv.length - suff_sync.length - 2) + suff_sync;
1579
+ const regex1 = new RegExp(`v[ieē]${suff_sync}$`);
1580
+ const regex2 = new RegExp(`vē${suff_sync}$`);
1581
+ const regex3 = new RegExp(`[aeiouyāēīōūȳăĕĭŏŭ]u[ieē]${suff_sync}$`);
1582
+ const regex4 = new RegExp(`[aeiouyāēīōūȳăĕĭŏŭ]uē${suff_sync}$`);
1583
+ if (fv.match(regex1) || fv.match(regex2) || fv.match(regex3) || fv.match(regex4)) {
1584
+ const rep = fv.substring(0, fv.length - suff_sync.length - 2) + suff_sync;
1446
1585
  this.insert_if_not(formval, rep);
1447
1586
  }
1448
1587
  }
@@ -1482,12 +1621,13 @@ class LaVerb {
1482
1621
  return allEmpty;
1483
1622
  }
1484
1623
  make_perfect_passive(data) {
1485
- const ppp = (0, VerbForm_1.getVerbForm)(data.forms, "perf_pasv_ptc") || [];
1624
+ var _a;
1625
+ let ppp = (0, VerbForm_1.getVerbForm)(data.forms, "perf_pasv_ptc") || [];
1486
1626
  const ppplinks = [];
1487
1627
  for (const pppform of ppp) {
1488
1628
  ppplinks.push(`[[${pppform}]]`);
1489
1629
  }
1490
- const ppplink = ppplinks.join(" or ");
1630
+ let ppplink = ppplinks.join(" or ");
1491
1631
  const sumlink = "[[sum]]";
1492
1632
  const text_for_slot = new Map([
1493
1633
  ["perf_pasv_indc", "present active indicative"],
@@ -1515,6 +1655,14 @@ class LaVerb {
1515
1655
  (passiveSuffix || "");
1516
1656
  (0, VerbForm_1.setVerbForm)(data.forms, slot, [entry]);
1517
1657
  }
1658
+ ppp = (0, VerbForm_1.getVerbForm)(data.forms, "1s_pres_actv_indc");
1659
+ if (ppp && ppp[0] == "faciō") {
1660
+ ppplink = "[[factum]]";
1661
+ for (const [slot, text] of text_for_slot) {
1662
+ const ts = (_a = (0, VerbForm_1.getVerbForm)(data.forms, slot)) !== null && _a !== void 0 ? _a : [];
1663
+ (0, VerbForm_1.setVerbForm)(data.forms, slot, [ts[0] + " or " + ppplink + " + " + text + " of " + sumlink]);
1664
+ }
1665
+ }
1518
1666
  }
1519
1667
  override(data, args) {
1520
1668
  for (const slot of this.iter_slots(true, false)) {
@@ -1590,6 +1738,13 @@ class LaVerb {
1590
1738
  }
1591
1739
  }
1592
1740
  }
1741
+ notes_override(data, args) {
1742
+ if (args.get("notes") == "-") {
1743
+ for (const key of data.footnotes.keys()) {
1744
+ data.footnotes.set(key, [""]);
1745
+ }
1746
+ }
1747
+ }
1593
1748
  set_linked_forms(data, typeinfo) {
1594
1749
  for (const slot of LaVerb.potential_lemma_slots) {
1595
1750
  const linked_forms = [];
@@ -1697,6 +1852,16 @@ class LaVerb {
1697
1852
  this.make_perf(data, [prefix + "dīx"]);
1698
1853
  this.make_supine(data, typeinfo, [prefix + "dict"]);
1699
1854
  this.add_form(data, "2s_pres_actv_impr", prefix, "dīc", 1);
1855
+ if (!this.options.suppressPoet) {
1856
+ this.add_form(data, "2s_pres_actv_impr", prefix, "dīc", 1);
1857
+ data.footnotes.set("2s_pres_actv_impr", ["Archaic."]);
1858
+ if (prefix == "") {
1859
+ this.add_form(data, "1s_futr_actv_indc", prefix, "dīcēbō", 2);
1860
+ this.add_form(data, "3s_futr_actv_indc", prefix, "dīcēbit", 2);
1861
+ data.footnotes.set("1s_futr_actv_indc", ["Archaic."]);
1862
+ data.footnotes.set("3s_futr_actv_indc", ["Archaic."]);
1863
+ }
1864
+ }
1700
1865
  });
1701
1866
  this.irreg_conjugations.set("do", (args, data, typeinfo) => {
1702
1867
  data.categories.push("Latin first conjugation verbs");
@@ -1747,7 +1912,13 @@ class LaVerb {
1747
1912
  this.add_forms(data, "impf_actv_subj", prefix, "ēssem", "ēssēs", "ēsset", "ēssēmus", "ēssētis", "ēssent");
1748
1913
  this.add_2_forms(data, "pres_actv_impr", prefix, "ēs", "ēste");
1749
1914
  this.add_23_forms(data, "futr_actv_impr", prefix, "ēstō", "ēstō", "ēstōte", []);
1750
- this.add_form(data, "pres_actv_inf", prefix, "ēsse");
1915
+ if (this.options.reorderEdere) {
1916
+ // switch order to make ēsse the lemma
1917
+ (0, VerbForm_1.setVerbForm)(data.forms, "pres_actv_inf", [prefix + "ēsse", prefix + "edere"]);
1918
+ }
1919
+ else {
1920
+ this.add_form(data, "pres_actv_inf", prefix, "ēsse");
1921
+ }
1751
1922
  });
1752
1923
  this.irreg_conjugations.set("eo", (args, data, typeinfo) => {
1753
1924
  data.categories.push("Latin irregular verbs");
@@ -1992,6 +2163,7 @@ class LaVerb {
1992
2163
  });
1993
2164
  this.irreg_conjugations.set("coepi", (args, data, typeinfo) => {
1994
2165
  data.categories.push("Latin third conjugation verbs");
2166
+ data.categories.push("Latin verbs with missing present stem");
1995
2167
  data.categories.push("Latin defective verbs");
1996
2168
  const prefix = typeinfo.prefix;
1997
2169
  this.make_perf(data, [prefix + "coep"]);
@@ -2033,6 +2205,10 @@ class LaVerb {
2033
2205
  (0, VerbForm_1.setVerbForm)(data.forms, "1p_pres_actv_subj", [prefix_s + "sīmus"]);
2034
2206
  (0, VerbForm_1.setVerbForm)(data.forms, "2p_pres_actv_subj", [prefix_s + "sītis"]);
2035
2207
  (0, VerbForm_1.setVerbForm)(data.forms, "3p_pres_actv_subj", [prefix_s + "sint"]);
2208
+ if (prefix_s == "ad" && !this.options.suppressPoet) {
2209
+ this.add_form(data, "3p_pres_actv_subj", "", "adessint", 2);
2210
+ data.footnotes.set("3p_pres_actv_subj", ["Archaic."]);
2211
+ }
2036
2212
  (0, VerbForm_1.setVerbForm)(data.forms, "1s_impf_actv_subj", [prefix_e + "essem", prefix_f + "forem"]);
2037
2213
  (0, VerbForm_1.setVerbForm)(data.forms, "2s_impf_actv_subj", [prefix_e + "essēs", prefix_f + "forēs"]);
2038
2214
  (0, VerbForm_1.setVerbForm)(data.forms, "3s_impf_actv_subj", [prefix_e + "esset", prefix_f + "foret"]);