@fpw/en-wiktionary-la-modules 0.0.12 → 0.0.15

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.
@@ -108,7 +108,11 @@ export const m_noun_decl: Map<string, ((data: SegmentData, args: string[]) => vo
108
108
 
109
109
  if (data.types.has("ium")) {
110
110
  setNominalForm(data.forms, "nom_sg", [stem1 + "ium"]);
111
- setNominalForm(data.forms, "gen_sg", [stem1 + "iī", stem1 + "ī"]);
111
+ if (!data.declOpts.suppressOldGenitive) {
112
+ setNominalForm(data.forms, "gen_sg", [stem1 + "iī", stem1 + "ī"]);
113
+ } else {
114
+ setNominalForm(data.forms, "gen_sg", [stem1 + "iī"]);
115
+ }
112
116
  setNominalForm(data.forms, "dat_sg", [stem1 + "iō"]);
113
117
  setNominalForm(data.forms, "acc_sg", [stem1 + "ium"]);
114
118
  setNominalForm(data.forms, "abl_sg", [stem1 + "iō"]);
@@ -121,7 +125,9 @@ export const m_noun_decl: Map<string, ((data: SegmentData, args: string[]) => vo
121
125
  setNominalForm(data.forms, "abl_pl", [stem1 + "iīs"]);
122
126
  setNominalForm(data.forms, "voc_pl", [stem1 + "ia"]);
123
127
 
124
- data.notes.set("gen_sg2", "Found in older Latin (until the Augustan Age).");
128
+ if (!data.declOpts.suppressOldGenitive) {
129
+ data.notes.set("gen_sg2", "Found in older Latin (until the Augustan Age).");
130
+ }
125
131
  } else if (data.types.has("a")) {
126
132
  data.subtitles.push("nominative/accusative/vocative plural in '-a'");
127
133
 
@@ -188,7 +194,11 @@ export const m_noun_decl: Map<string, ((data: SegmentData, args: string[]) => vo
188
194
  setNominalForm(data.forms, "voc_pl", [stem2 + "ī"]);
189
195
  } else if (data.types.has("ius")) {
190
196
  setNominalForm(data.forms, "nom_sg", [stem1 + "ius"]);
191
- setNominalForm(data.forms, "gen_sg", [stem1 + "iī", stem1 + "ī"]);
197
+ if (!data.declOpts.suppressOldGenitive) {
198
+ setNominalForm(data.forms, "gen_sg", [stem1 + "iī", stem1 + "ī"]);
199
+ } else {
200
+ setNominalForm(data.forms, "gen_sg", [stem1 + "iī"]);
201
+ }
192
202
  setNominalForm(data.forms, "dat_sg", [stem1 + "iō"]);
193
203
  setNominalForm(data.forms, "acc_sg", [stem1 + "ium"]);
194
204
  setNominalForm(data.forms, "abl_sg", [stem1 + "iō"]);
@@ -206,7 +216,9 @@ export const m_noun_decl: Map<string, ((data: SegmentData, args: string[]) => vo
206
216
  setNominalForm(data.forms, "abl_pl", [stem1 + "iīs"]);
207
217
  setNominalForm(data.forms, "voc_pl", [stem1 + "iī"]);
208
218
 
209
- data.notes.set("gen_sg2", "Found in older Latin (until the Augustan Age).");
219
+ if (!data.declOpts.suppressOldGenitive) {
220
+ data.notes.set("gen_sg2", "Found in older Latin (until the Augustan Age).");
221
+ }
210
222
  } else if (data.types.has("vos")) {
211
223
  data.subtitles.push("nominative singular in '-os' after 'v'");
212
224
  setNominalForm(data.forms, "nom_sg", [stem1 + "os"]);
@@ -432,7 +444,11 @@ export const m_noun_decl: Map<string, ((data: SegmentData, args: string[]) => vo
432
444
  }
433
445
 
434
446
  setNominalForm(data.forms, "gen_pl", [stem2 + "ium"]);
435
- setNominalForm(data.forms, "acc_pl", [stem2 + "ēs", stem2 + "īs"]);
447
+ if (!data.declOpts.suppressNonNeuterIStemAccIs) {
448
+ setNominalForm(data.forms, "acc_pl", [stem2 + "ēs", stem2 + "īs"]);
449
+ } else {
450
+ setNominalForm(data.forms, "acc_pl", [stem2 + "ēs"]);
451
+ }
436
452
 
437
453
  for (const subtype of data.types) {
438
454
  const acc_sg_i_stem_props = acc_sg_i_stem_subtypes.get(subtype);
@@ -645,9 +661,14 @@ export const m_noun_decl: Map<string, ((data: SegmentData, args: string[]) => vo
645
661
 
646
662
  setNominalForm(data.forms, "nom_pl", ["bovēs"]);
647
663
  setNominalForm(data.forms, "gen_pl", ["boum"]);
648
- setNominalForm(data.forms, "dat_pl", ["bōbus", "būbus"]);
664
+ if (!data.declOpts.suppressRareIrregForms) {
665
+ setNominalForm(data.forms, "dat_pl", ["bōbus", "būbus"]);
666
+ setNominalForm(data.forms, "abl_pl", ["bōbus", "būbus"]);
667
+ } else {
668
+ setNominalForm(data.forms, "dat_pl", ["bōbus"]);
669
+ setNominalForm(data.forms, "abl_pl", ["bōbus"]);
670
+ }
649
671
  setNominalForm(data.forms, "acc_pl", ["bovēs"]);
650
- setNominalForm(data.forms, "abl_pl", ["bōbus", "būbus"]);
651
672
  setNominalForm(data.forms, "voc_pl", ["bovēs"]);
652
673
  } else if (stem == "cherub") {
653
674
  data.title = "mostly indeclinable";
@@ -692,17 +713,27 @@ export const m_noun_decl: Map<string, ((data: SegmentData, args: string[]) => vo
692
713
  data.title = "fourth/second-declension noun";
693
714
 
694
715
  setNominalForm(data.forms, "nom_sg", ["domus"]);
695
- setNominalForm(data.forms, "gen_sg", ["domūs", "domī"]);
696
- setNominalForm(data.forms, "dat_sg", ["domuī", "domō", "domū"]);
716
+ if (!data.declOpts.suppressRareIrregForms) {
717
+ setNominalForm(data.forms, "gen_sg", ["domūs", "domī"]);
718
+ setNominalForm(data.forms, "dat_sg", ["domuī", "domō", "domū"]);
719
+ setNominalForm(data.forms, "abl_sg", ["domū", "domō"]);
720
+
721
+ setNominalForm(data.forms, "gen_pl", ["domuum", "domōrum"]);
722
+ setNominalForm(data.forms, "acc_pl", ["domūs", "domōs"]);
723
+ } else {
724
+ setNominalForm(data.forms, "gen_sg", ["domūs"]);
725
+ setNominalForm(data.forms, "dat_sg", ["domuī"]);
726
+ setNominalForm(data.forms, "abl_sg", ["domō"]);
727
+
728
+ setNominalForm(data.forms, "gen_pl", ["domuum"]);
729
+ setNominalForm(data.forms, "acc_pl", ["domōs"]);
730
+ }
697
731
  setNominalForm(data.forms, "acc_sg", ["domum"]);
698
- setNominalForm(data.forms, "abl_sg", ["domū", "domō"]);
699
732
  setNominalForm(data.forms, "voc_sg", ["domus"]);
700
733
  setNominalForm(data.forms, "loc_sg", ["domī"]);
701
734
 
702
735
  setNominalForm(data.forms, "nom_pl", ["domūs"]);
703
- setNominalForm(data.forms, "gen_pl", ["domuum", "domōrum"]);
704
736
  setNominalForm(data.forms, "dat_pl", ["domibus"]);
705
- setNominalForm(data.forms, "acc_pl", ["domūs", "domōs"]);
706
737
  setNominalForm(data.forms, "abl_pl", ["domibus"]);
707
738
  setNominalForm(data.forms, "voc_pl", ["domūs"]);
708
739
  setNominalForm(data.forms, "loc_pl", ["domibus"]);
@@ -804,9 +835,16 @@ export const m_noun_decl: Map<string, ((data: SegmentData, args: string[]) => vo
804
835
  data.subtitles.push("irregular");
805
836
  data.subtitles.push("defective");
806
837
 
838
+ if (!data.declOpts.suppressRareIrregForms) {
839
+ setNominalForm(data.forms, "gen_sg", ["*vīs"]);
840
+ setNominalForm(data.forms, "dat_sg", ["*vī"]);
841
+
842
+ setNominalForm(data.forms, "acc_pl", ["vīrēs", "vīrīs"]);
843
+ } else {
844
+ setNominalForm(data.forms, "acc_pl", ["vīrēs"]);
845
+ }
846
+
807
847
  setNominalForm(data.forms, "nom_sg", ["vīs"]);
808
- setNominalForm(data.forms, "gen_sg", ["*vīs"]);
809
- setNominalForm(data.forms, "dat_sg", ["*vī"]);
810
848
  setNominalForm(data.forms, "acc_sg", ["vim"]);
811
849
  setNominalForm(data.forms, "abl_sg", ["vī"]);
812
850
  setNominalForm(data.forms, "voc_sg", ["vīs"]);
@@ -814,7 +852,6 @@ export const m_noun_decl: Map<string, ((data: SegmentData, args: string[]) => vo
814
852
  setNominalForm(data.forms, "nom_pl", ["vīrēs"]);
815
853
  setNominalForm(data.forms, "gen_pl", ["vīrium"]);
816
854
  setNominalForm(data.forms, "dat_pl", ["vīribus"]);
817
- setNominalForm(data.forms, "acc_pl", ["vīrēs", "vīrīs"]);
818
855
  setNominalForm(data.forms, "abl_pl", ["vīribus"]);
819
856
  setNominalForm(data.forms, "voc_pl", ["vīrēs"]);
820
857
  } else {
@@ -1,15 +0,0 @@
1
- import { Conjugation } from "./conjugation/LaVerb";
2
- import { NounData, AdjectiveData } from "./declination/LaNominal";
3
- import { Headword } from "./headword/HeadWord";
4
- export declare type TemplateData = NounData | AdjectiveData | Conjugation | Headword;
5
- export declare class LaEngine {
6
- private conj;
7
- private nominal;
8
- private headword;
9
- constructor();
10
- decline_noun(template: string): NounData;
11
- decline_adjective(template: string): AdjectiveData;
12
- conjugate_verb(template: string): Conjugation;
13
- parse_headword(template: string, lemma: string): Headword;
14
- parse_template(template: string, lemma: string): TemplateData;
15
- }
@@ -1,46 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.LaEngine = void 0;
4
- const common_1 = require("./common");
5
- const LaVerb_1 = require("./conjugation/LaVerb");
6
- const LaNominal_1 = require("./declination/LaNominal");
7
- const HeadwordParser_1 = require("./headword/HeadwordParser");
8
- class LaEngine {
9
- constructor() {
10
- this.conj = new LaVerb_1.LaVerb();
11
- this.nominal = new LaNominal_1.LaNominal();
12
- this.conj = new LaVerb_1.LaVerb();
13
- this.nominal = new LaNominal_1.LaNominal();
14
- this.headword = new HeadwordParser_1.HeadwordParser(this.nominal, this.conj);
15
- }
16
- decline_noun(template) {
17
- const args = common_1.parse_template(template);
18
- return this.nominal.do_generate_noun_forms(args);
19
- }
20
- decline_adjective(template) {
21
- const args = common_1.parse_template(template);
22
- return this.nominal.do_generate_adj_forms(args);
23
- }
24
- conjugate_verb(template) {
25
- const args = common_1.parse_template(template);
26
- return this.conj.make_data(args);
27
- }
28
- parse_headword(template, lemma) {
29
- return this.headword.parse(template, lemma);
30
- }
31
- parse_template(template, lemma) {
32
- if (this.headword.isHeadwordTemplate(template)) {
33
- return this.headword.parse(template, lemma);
34
- }
35
- const args = common_1.parse_template(template);
36
- const templateName = args.get("0") || "";
37
- switch (templateName) {
38
- case "la-conj": return this.conj.make_data(args);
39
- case "la-ndecl": return this.nominal.do_generate_noun_forms(args);
40
- case "la-adecl": return this.nominal.do_generate_adj_forms(args);
41
- default: throw Error(`Unknown template ${templateName}`);
42
- }
43
- }
44
- }
45
- exports.LaEngine = LaEngine;
46
- //# sourceMappingURL=LaEngine.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"LaEngine.js","sourceRoot":"","sources":["../../src/modules/LaEngine.ts"],"names":[],"mappings":";;;AAAA,qCAA0C;AAC1C,iDAA2D;AAC3D,uDAA6E;AAE7E,8DAA2D;AAI3D,MAAa,QAAQ;IAKjB;QAJQ,SAAI,GAAG,IAAI,eAAM,EAAE,CAAC;QACpB,YAAO,GAAG,IAAI,qBAAS,EAAE,CAAC;QAI9B,IAAI,CAAC,IAAI,GAAG,IAAI,eAAM,EAAE,CAAC;QACzB,IAAI,CAAC,OAAO,GAAG,IAAI,qBAAS,EAAE,CAAC;QAC/B,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,uBAAc,CAAC,QAAQ,CAAC,CAAC;QACtC,OAAO,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;IACrD,CAAC;IAEM,iBAAiB,CAAC,QAAgB;QACrC,MAAM,IAAI,GAAG,uBAAc,CAAC,QAAQ,CAAC,CAAC;QACtC,OAAO,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;IACpD,CAAC;IAEM,cAAc,CAAC,QAAgB;QAClC,MAAM,IAAI,GAAG,uBAAc,CAAC,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,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;QAED,MAAM,IAAI,GAAG,uBAAc,CAAC,QAAQ,CAAC,CAAC;QACtC,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QAEzC,QAAQ,YAAY,EAAE;YAClB,KAAK,SAAS,CAAC,CAAK,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YACrD,KAAK,UAAU,CAAC,CAAI,OAAO,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;YACrE,KAAK,UAAU,CAAC,CAAI,OAAO,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;YACpE,OAAO,CAAC,CAAY,MAAM,KAAK,CAAC,oBAAoB,YAAY,EAAE,CAAC,CAAC;SACvE;IACL,CAAC;CACJ;AA7CD,4BA6CC"}
@@ -1,18 +0,0 @@
1
- import { Conjugation } from "./conjugation/LaVerb";
2
- import { Declension } from "./declination/LaNominal";
3
- export declare type Inflection = Declension | Conjugation;
4
- export declare class LaWiktionary {
5
- private nominal;
6
- private verb;
7
- private headword;
8
- constructor();
9
- load(wordFile: string): Promise<void>;
10
- private processEntry;
11
- private processInflectedWord;
12
- private addInflected;
13
- private addParticle;
14
- private runInflection;
15
- private match;
16
- private getLemmaFromInflection;
17
- static main(): Promise<void>;
18
- }
@@ -1,171 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.LaWiktionary = void 0;
13
- const readline = require("readline");
14
- const fs_1 = require("fs");
15
- const LaVerb_1 = require("./conjugation/LaVerb");
16
- const LaNominal_1 = require("./declination/LaNominal");
17
- const HeadwordParser_1 = require("./headword/HeadwordParser");
18
- const common_1 = require("./common");
19
- class LaWiktionary {
20
- constructor() {
21
- this.nominal = new LaNominal_1.LaNominal();
22
- this.verb = new LaVerb_1.LaVerb();
23
- this.headword = new HeadwordParser_1.HeadwordParser(this.nominal, this.verb);
24
- }
25
- load(wordFile) {
26
- return __awaiter(this, void 0, void 0, function* () {
27
- const stream = fs_1.createReadStream(wordFile);
28
- const reader = readline.createInterface({ input: stream, crlfDelay: Infinity });
29
- reader.on("line", line => {
30
- const entry = JSON.parse(line);
31
- this.processEntry(entry);
32
- });
33
- return new Promise(accept => {
34
- reader.once("close", () => {
35
- accept();
36
- });
37
- });
38
- });
39
- }
40
- processEntry(entry) {
41
- if (entry.inflections.length > 0) {
42
- this.processInflectedWord(entry);
43
- }
44
- else {
45
- for (const head of entry.heads) {
46
- this.addParticle(entry, head);
47
- }
48
- }
49
- }
50
- processInflectedWord(entry) {
51
- const headwords = new Set();
52
- // pre-parse all headwords
53
- for (const template of entry.heads) {
54
- const headword = this.headword.parse(template, entry.lemma);
55
- if (!headword) {
56
- console.warn(`Unknown headword template ${template}`);
57
- continue;
58
- }
59
- headwords.add(headword);
60
- }
61
- for (const infTemplate of entry.inflections) {
62
- const infData = this.runInflection(infTemplate);
63
- if (!infData) {
64
- continue;
65
- }
66
- for (const head of headwords) {
67
- const lemmata = this.match(infData, head, entry.lemma);
68
- if (lemmata.length == 0) {
69
- continue;
70
- }
71
- }
72
- }
73
- }
74
- addInflected(entry, head, inflection) {
75
- }
76
- addParticle(entry, head) {
77
- this.headword.parse(head, entry.lemma);
78
- }
79
- runInflection(template) {
80
- const args = common_1.parse_template(template);
81
- const templateName = args.get("0") || "";
82
- switch (templateName) {
83
- case "la-conj":
84
- return this.verb.make_data(args);
85
- case "la-ndecl":
86
- return this.nominal.do_generate_noun_forms(args);
87
- case "la-adecl":
88
- return this.nominal.do_generate_adj_forms(args);
89
- case "la-decl-gerund":
90
- const form = args.get("1");
91
- const gerundTemplate = `{{la-ndecl|${form}<2.sg>|nom_sg=-|voc_sg=-}}`;
92
- const gerundArgs = common_1.parse_template(gerundTemplate);
93
- return this.nominal.do_generate_noun_forms(gerundArgs, "gerunds", true);
94
- case "la-decl-ppron":
95
- // only used for ego and inflected forms like tu, nos, ...
96
- return undefined;
97
- default:
98
- console.log(`Skipping unknown inflection template ${templateName}`);
99
- return undefined;
100
- }
101
- }
102
- match(inf, headword, lemma) {
103
- const infLemmata = this.getLemmaFromInflection(inf);
104
- if (infLemmata.length == 0) {
105
- console.warn(`Couldn't get lemma for ${lemma}`);
106
- }
107
- function tryMatch(dropDiacritial) {
108
- const thisMatches = [];
109
- for (const infLemma of infLemmata) {
110
- for (const head of headword.heads) {
111
- const l1 = dropDiacritial ? common_1.remove_diacritical(infLemma, false) : infLemma;
112
- const l2 = dropDiacritial ? common_1.remove_diacritical(head, false) : head;
113
- if (l1 == l2) {
114
- thisMatches.push(l1);
115
- }
116
- }
117
- }
118
- return thisMatches;
119
- }
120
- const matches = tryMatch(false);
121
- if (matches.length == 0) {
122
- console.warn(`No match for inflection [${infLemmata}] with head [${headword.heads}] in lemma ${lemma}`);
123
- }
124
- return matches;
125
- }
126
- getLemmaFromInflection(inf) {
127
- if (inf.inflectionType == "conjugation") {
128
- return this.verb.get_lemma_forms(inf.data, true);
129
- }
130
- else if (inf.inflectionType == "declension") {
131
- const lemmaNum = (inf.num == LaNominal_1.NumberTantum.Plural ? "pl" : "sg");
132
- if (inf.declensionType == "noun") {
133
- if (inf.pos == "gerunds") {
134
- return inf.forms.get(`acc_${lemmaNum}`) || [];
135
- }
136
- else {
137
- let forms = inf.forms.get(`nom_${lemmaNum}`) || [LaNominal_1.LaNominal.EmptyForm];
138
- if (forms[0] != LaNominal_1.LaNominal.EmptyForm) {
139
- return forms;
140
- }
141
- forms = inf.forms.get(`gen_${lemmaNum}`) || [LaNominal_1.LaNominal.EmptyForm];
142
- if (forms[0] != LaNominal_1.LaNominal.EmptyForm) {
143
- return forms;
144
- }
145
- forms = inf.forms.get(`acc_${lemmaNum}`) || [LaNominal_1.LaNominal.EmptyForm];
146
- if (forms[0] != LaNominal_1.LaNominal.EmptyForm) {
147
- return forms;
148
- }
149
- return [];
150
- }
151
- }
152
- else if (inf.declensionType == "adjective") {
153
- const m = inf.forms.get(`nom_${lemmaNum}_m`);
154
- if (m && m[0] != LaNominal_1.LaNominal.EmptyForm) {
155
- return m;
156
- }
157
- return inf.forms.get(`nom_${lemmaNum}_n`) || [];
158
- }
159
- }
160
- return [];
161
- }
162
- static main() {
163
- return __awaiter(this, void 0, void 0, function* () {
164
- console.log("Loading words...");
165
- const la = new LaWiktionary();
166
- yield la.load("./data/words.json");
167
- });
168
- }
169
- }
170
- exports.LaWiktionary = LaWiktionary;
171
- //# sourceMappingURL=LaWiktionary.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"LaWiktionary.js","sourceRoot":"","sources":["../../src/modules/LaWiktionary.ts"],"names":[],"mappings":"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"}