@fpw/en-wiktionary-la-modules 0.0.10 → 0.0.13

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 (45) hide show
  1. package/dist/LaEngine.js +6 -6
  2. package/dist/LaEngine.js.map +1 -1
  3. package/dist/index.js +5 -1
  4. package/dist/index.js.map +1 -1
  5. package/dist/modules/conjugation/LaVerb.d.ts +1 -1
  6. package/dist/modules/conjugation/LaVerb.js +379 -375
  7. package/dist/modules/conjugation/LaVerb.js.map +1 -1
  8. package/dist/modules/conjugation/VerbForm.js +2 -2
  9. package/dist/modules/conjugation/VerbForm.js.map +1 -1
  10. package/dist/modules/conjugation/VerbType.d.ts +1 -0
  11. package/dist/modules/conjugation/VerbType.js +3 -2
  12. package/dist/modules/conjugation/VerbType.js.map +1 -1
  13. package/dist/modules/declination/LaAdjData.d.ts +1 -1
  14. package/dist/modules/declination/LaAdjData.js +505 -428
  15. package/dist/modules/declination/LaAdjData.js.map +1 -1
  16. package/dist/modules/declination/LaNominal.d.ts +10 -0
  17. package/dist/modules/declination/LaNominal.js +79 -73
  18. package/dist/modules/declination/LaNominal.js.map +1 -1
  19. package/dist/modules/declination/LaNounData.js +467 -417
  20. package/dist/modules/declination/LaNounData.js.map +1 -1
  21. package/dist/modules/declination/NominalForm.js +2 -2
  22. package/dist/modules/declination/NominalForm.js.map +1 -1
  23. package/dist/modules/headword/HeadwordParser.js +17 -17
  24. package/dist/modules/headword/HeadwordParser.js.map +1 -1
  25. package/package.json +9 -8
  26. package/src/LaEngine.ts +82 -0
  27. package/src/index.ts +16 -0
  28. package/src/modules/common.ts +164 -0
  29. package/src/modules/conjugation/LaVerb.ts +2490 -0
  30. package/src/modules/conjugation/VerbAffix.ts +18 -0
  31. package/src/modules/conjugation/VerbForm.ts +223 -0
  32. package/src/modules/conjugation/VerbType.ts +51 -0
  33. package/src/modules/declination/LaAdjData.ts +913 -0
  34. package/src/modules/declination/LaNominal.ts +1992 -0
  35. package/src/modules/declination/LaNounData.ts +896 -0
  36. package/src/modules/declination/LaPersonalPronoun.ts +77 -0
  37. package/src/modules/declination/NominalForm.ts +89 -0
  38. package/src/modules/headword/HeadWord.ts +132 -0
  39. package/src/modules/headword/HeadwordParser.ts +514 -0
  40. package/dist/modules/LaEngine.d.ts +0 -15
  41. package/dist/modules/LaEngine.js +0 -46
  42. package/dist/modules/LaEngine.js.map +0 -1
  43. package/dist/modules/LaWiktionary.d.ts +0 -18
  44. package/dist/modules/LaWiktionary.js +0 -171
  45. package/dist/modules/LaWiktionary.js.map +0 -1
@@ -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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"}