@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.
Files changed (63) hide show
  1. package/LICENSE +75 -75
  2. package/README.md +19 -15
  3. package/dist/LaEngine.d.ts +23 -23
  4. package/dist/LaEngine.js +64 -66
  5. package/dist/index.d.ts +12 -11
  6. package/dist/index.js +12 -28
  7. package/dist/modules/common.d.ts +67 -66
  8. package/dist/modules/common.js +145 -157
  9. package/dist/modules/conjugation/LaVerb.d.ts +118 -109
  10. package/dist/modules/conjugation/LaVerb.js +2861 -2295
  11. package/dist/modules/conjugation/VerbAffix.d.ts +18 -18
  12. package/dist/modules/conjugation/VerbAffix.js +19 -23
  13. package/dist/modules/conjugation/VerbForm.d.ts +204 -182
  14. package/dist/modules/conjugation/VerbForm.js +215 -199
  15. package/dist/modules/conjugation/VerbType.d.ts +54 -40
  16. package/dist/modules/conjugation/VerbType.js +66 -58
  17. package/dist/modules/declination/LaAdjData.d.ts +16 -16
  18. package/dist/modules/declination/LaAdjData.js +1474 -908
  19. package/dist/modules/declination/LaNominal.d.ts +136 -130
  20. package/dist/modules/declination/LaNominal.js +1884 -1804
  21. package/dist/modules/declination/LaNounData.d.ts +16 -2
  22. package/dist/modules/declination/LaNounData.js +935 -855
  23. package/dist/modules/declination/LaPersonalPronoun.d.ts +12 -12
  24. package/dist/modules/declination/LaPersonalPronoun.js +80 -85
  25. package/dist/modules/declination/NominalForm.d.ts +85 -69
  26. package/dist/modules/declination/NominalForm.js +101 -91
  27. package/dist/modules/declination/NominalType.d.ts +191 -120
  28. package/dist/modules/declination/NominalType.js +211 -146
  29. package/dist/modules/headword/HeadWord.d.ts +107 -107
  30. package/dist/modules/headword/HeadWord.js +28 -32
  31. package/dist/modules/headword/HeadwordParser.d.ts +29 -29
  32. package/dist/modules/headword/HeadwordParser.js +456 -452
  33. package/package.json +23 -15
  34. package/dist/LaEngine.js.map +0 -1
  35. package/dist/index.js.map +0 -1
  36. package/dist/modules/common.js.map +0 -1
  37. package/dist/modules/conjugation/LaVerb.js.map +0 -1
  38. package/dist/modules/conjugation/VerbAffix.js.map +0 -1
  39. package/dist/modules/conjugation/VerbForm.js.map +0 -1
  40. package/dist/modules/conjugation/VerbType.js.map +0 -1
  41. package/dist/modules/declination/LaAdjData.js.map +0 -1
  42. package/dist/modules/declination/LaNominal.js.map +0 -1
  43. package/dist/modules/declination/LaNounData.js.map +0 -1
  44. package/dist/modules/declination/LaPersonalPronoun.js.map +0 -1
  45. package/dist/modules/declination/NominalForm.js.map +0 -1
  46. package/dist/modules/declination/NominalType.js.map +0 -1
  47. package/dist/modules/headword/HeadWord.js.map +0 -1
  48. package/dist/modules/headword/HeadwordParser.js.map +0 -1
  49. package/src/LaEngine.ts +0 -86
  50. package/src/index.ts +0 -16
  51. package/src/modules/common.ts +0 -164
  52. package/src/modules/conjugation/LaVerb.ts +0 -2669
  53. package/src/modules/conjugation/VerbAffix.ts +0 -18
  54. package/src/modules/conjugation/VerbForm.ts +0 -223
  55. package/src/modules/conjugation/VerbType.ts +0 -55
  56. package/src/modules/declination/LaAdjData.ts +0 -1036
  57. package/src/modules/declination/LaNominal.ts +0 -2025
  58. package/src/modules/declination/LaNounData.ts +0 -897
  59. package/src/modules/declination/LaPersonalPronoun.ts +0 -92
  60. package/src/modules/declination/NominalForm.ts +0 -89
  61. package/src/modules/declination/NominalType.ts +0 -157
  62. package/src/modules/headword/HeadWord.ts +0 -132
  63. package/src/modules/headword/HeadwordParser.ts +0 -515
@@ -1,1036 +0,0 @@
1
- /**
2
- * This is a complete re-implementation of Wiktionary's Module:la-adj/data, developed by Benwing2.
3
- * It was converted from Lua to TypeScript by Folke Will <folko@solhost.org>.
4
- *
5
- * Original source: https://en.wiktionary.org/wiki/Module:la-adj/data
6
- * Based on version: https://en.wiktionary.org/w/index.php?title=Module:la-adj/data&oldid=71117358
7
- *
8
- * Lua idioms, function and variable names kept as in the original in order to easily
9
- * backport later changes to this implementation.
10
- *
11
- * For that reason, it's suggested to add a type-aware wrapper around this class and leave
12
- * this code unchanged instead of improving the types and use of idioms in this class.
13
- *
14
- */
15
- import { NumberTantum, SegmentData } from "./LaNominal";
16
- import { setNominalForm } from "./NominalForm";
17
- import { NominalType } from "./NominalType";
18
-
19
- export const m_adj_decl: Map<string, ((data: SegmentData, args: string[]) => void)> = new Map([
20
- ["0", (data, args) => {
21
- data.title = "indeclinable " + singularize(data.pos);
22
- const stem = args[0];
23
-
24
- setNominalForm(data.forms, "nom_sg_m", [stem]);
25
- setNominalForm(data.forms, "nom_pl_m", [stem]);
26
-
27
- setNominalForm(data.forms, "gen_sg_m", [stem]);
28
- setNominalForm(data.forms, "gen_pl_m", [stem]);
29
-
30
- setNominalForm(data.forms, "dat_sg_m", [stem]);
31
- setNominalForm(data.forms, "dat_pl_m", [stem]);
32
-
33
- setNominalForm(data.forms, "acc_sg_m", [stem]);
34
- setNominalForm(data.forms, "acc_pl_m", [stem]);
35
-
36
- setNominalForm(data.forms, "abl_sg_m", [stem]);
37
- setNominalForm(data.forms, "abl_pl_m", [stem]);
38
-
39
- setNominalForm(data.forms, "loc_sg_m", [stem]);
40
- setNominalForm(data.forms, "loc_pl_m", [stem]);
41
-
42
- setNominalForm(data.forms, "voc_sg_m", [stem]);
43
- setNominalForm(data.forms, "voc_pl_m", [stem]);
44
-
45
- data.categories.push("Latin indeclinable " + data.pos);
46
- }],
47
- ["1&2", (data, args) => {
48
- const singpos = singularize(data.pos);
49
- if (data.gender == "F") {
50
- data.title = "first-declension " + singpos;
51
- } else if (data.gender) {
52
- data.title = "second-declension " + singpos;
53
- } else {
54
- data.title = "first/second-declension " + singpos;
55
- }
56
-
57
- let stem = args[0];
58
- let original: string | undefined;
59
-
60
- if (data.types.has(NominalType.Er)) {
61
- if (stem.match(/er$/)) {
62
- data.subtitles.push("nominative masculine singular in '-er'");
63
- data.categories.push("Latin first and second declension " + data.pos + " with nominative masculine singular in -er");
64
- } else if (stem.match(/ur$/)) {
65
- data.subtitles.push("nominative masculine singular in '-ur'");
66
- data.categories.push("Latin first and second declension " + data.pos + " with nominative masculine singular in -ur");
67
- } else {
68
- throw Error(`Unrecognized '-r' stem (doesn't and in '-er' or '-ur'): ${stem}`);
69
- }
70
- original = stem;
71
- stem = args[1];
72
- }
73
-
74
- let us = "us";
75
- let a_sf = "a";
76
- let um = "um";
77
- let ae_gsf = "ae";
78
- let am = "am";
79
- let a_macron = "ā";
80
-
81
- if (data.types.has(NominalType.GreekA) || data.types.has(NominalType.GreekE)) {
82
- data.subtitles.push("Greek-type");
83
- data.categories.push("Latin first and second declension " + data.pos + " with Greek declension");
84
- if (data.types.has(NominalType.GreekA)) {
85
- us = "os";
86
- um = "on";
87
- am = "ān";
88
- } else {
89
- us = "os",
90
- a_sf = "ē";
91
- um = "on";
92
- ae_gsf = "ēs";
93
- am = "ēn";
94
- a_macron = "ē";
95
- }
96
- }
97
- setNominalForm(data.forms, "nom_sg_m", [original || (stem + us)]);
98
- setNominalForm(data.forms, "nom_sg_f", [stem + a_sf]);
99
- setNominalForm(data.forms, "nom_sg_n", [stem + um]);
100
- setNominalForm(data.forms, "nom_pl_m", [stem + "ī"]);
101
- setNominalForm(data.forms, "nom_pl_f", [stem + "ae"]);
102
- setNominalForm(data.forms, "nom_pl_n", [stem + "a"]);
103
-
104
- setNominalForm(data.forms, "gen_sg_m", [stem + "ī"]);
105
- setNominalForm(data.forms, "gen_sg_f", [stem + ae_gsf]);
106
- setNominalForm(data.forms, "gen_sg_n", [stem + "ī"]);
107
- setNominalForm(data.forms, "gen_pl_m", [stem + "ōrum"]);
108
- setNominalForm(data.forms, "gen_pl_f", [stem + "ārum"]);
109
- setNominalForm(data.forms, "gen_pl_n", [stem + "ōrum"]);
110
-
111
- setNominalForm(data.forms, "dat_sg_m", [stem + "ō"]);
112
- setNominalForm(data.forms, "dat_sg_f", [stem + "ae"]);
113
- setNominalForm(data.forms, "dat_sg_n", [stem + "ō"]);
114
- setNominalForm(data.forms, "dat_pl_m", [stem + "īs"]);
115
- setNominalForm(data.forms, "dat_pl_f", [stem + "īs"]);
116
- setNominalForm(data.forms, "dat_pl_n", [stem + "īs"]);
117
-
118
- setNominalForm(data.forms, "acc_sg_m", [stem + um]);
119
- setNominalForm(data.forms, "acc_sg_f", [stem + am]);
120
- setNominalForm(data.forms, "acc_sg_n", [stem + um]);
121
- setNominalForm(data.forms, "acc_pl_m", [stem + "ōs"]);
122
- setNominalForm(data.forms, "acc_pl_f", [stem + "ās"]);
123
- setNominalForm(data.forms, "acc_pl_n", [stem + "a"]);
124
-
125
- setNominalForm(data.forms, "abl_sg_m", [stem + "ō"]);
126
- setNominalForm(data.forms, "abl_sg_f", [stem + a_macron]);
127
- setNominalForm(data.forms, "abl_sg_n", [stem + "ō"]);
128
- setNominalForm(data.forms, "abl_pl_m", [stem + "īs"]);
129
- setNominalForm(data.forms, "abl_pl_f", [stem + "īs"]);
130
- setNominalForm(data.forms, "abl_pl_n", [stem + "īs"]);
131
-
132
- setNominalForm(data.forms, "voc_sg_m", [original || (stem + "e")]);
133
- setNominalForm(data.forms, "voc_sg_f", [stem + a_sf]);
134
- setNominalForm(data.forms, "voc_sg_n", [stem + um]);
135
- setNominalForm(data.forms, "voc_pl_m", [stem + "ī"]);
136
- setNominalForm(data.forms, "voc_pl_f", [stem + "ae"]);
137
- setNominalForm(data.forms, "voc_pl_n", [stem + "a"]);
138
-
139
- setNominalForm(data.forms, "loc_sg_m", [stem + "ī"]);
140
- setNominalForm(data.forms, "loc_sg_f", [stem + "ae"]);
141
- setNominalForm(data.forms, "loc_sg_n", [stem + "ī"]);
142
- setNominalForm(data.forms, "loc_pl_m", [stem + "īs"]);
143
- setNominalForm(data.forms, "loc_pl_f", [stem + "īs"]);
144
- setNominalForm(data.forms, "loc_pl_n", [stem + "īs"]);
145
-
146
- if (data.types.has(NominalType.Ius)) {
147
- data.subtitles.push("pronominal");
148
- data.categories.push("Latin first and second declension " + data.pos + " with genitive singular in -ī̆us");
149
- setNominalForm(data.forms, "gen_sg_m", [stem + "ī̆us"]);
150
- setNominalForm(data.forms, "gen_sg_f", [stem + "ī̆us"]);
151
- setNominalForm(data.forms, "gen_sg_n", [stem + "ī̆us"]);
152
- setNominalForm(data.forms, "dat_sg_m", [stem + "ī"]);
153
- setNominalForm(data.forms, "dat_sg_f", [stem + "ī"]);
154
- setNominalForm(data.forms, "dat_sg_n", [stem + "ī"]);
155
- } else if (data.types.has(NominalType.NotIus)) {
156
- data.subtitles.push("non-pronominal");
157
- }
158
-
159
- if (stem == "me") {
160
- setNominalForm(data.forms, "voc_sg_m", ["mī"]);
161
- }
162
-
163
- if (data.types.has(NominalType.Ic)) {
164
- data.subtitles.push("'hic'-type");
165
- let oc = "oc";
166
- let oc_macron = "ōc";
167
- if (stem == "ill") {
168
- oc = "uc";
169
- oc_macron = "ūc";
170
- }
171
-
172
- setNominalForm(data.forms, "nom_sg_m", [stem + "ic"]);
173
- setNominalForm(data.forms, "nom_sg_f", [stem + "aec"]);
174
- setNominalForm(data.forms, "nom_sg_n", [stem + oc]);
175
- setNominalForm(data.forms, "nom_pl_n", [stem + "aec"]);
176
-
177
- setNominalForm(data.forms, "gen_sg_m", [stem + "uius"]);
178
- setNominalForm(data.forms, "gen_sg_f", [stem + "uius"]);
179
- setNominalForm(data.forms, "gen_sg_n", [stem + "uius"]);
180
-
181
- setNominalForm(data.forms, "dat_sg_m", [stem + "uic"]);
182
- setNominalForm(data.forms, "dat_sg_f", [stem + "uic"]);
183
- setNominalForm(data.forms, "dat_sg_n", [stem + "uic"]);
184
-
185
- setNominalForm(data.forms, "acc_sg_m", [stem + "unc"]);
186
- setNominalForm(data.forms, "acc_sg_f", [stem + "anc"]);
187
- setNominalForm(data.forms, "acc_sg_n", [stem + oc]);
188
- setNominalForm(data.forms, "acc_pl_n", [stem + "aec"]);
189
-
190
- setNominalForm(data.forms, "abl_sg_m", [stem + "ōc"]);
191
- setNominalForm(data.forms, "abl_sg_f", [stem + "āc"]);
192
- setNominalForm(data.forms, "abl_sg_n", [stem + oc_macron]);
193
-
194
- data.voc = false;
195
- }
196
-
197
- data.categories.push("Latin first and second declension " + data.pos);
198
- }],
199
- ["1-1", (data, args) => {
200
- data.title = "first-declension " + singularize(data.pos);
201
- data.subtitles.push("masculine and neuter forms identical to feminine forms");
202
- const stem = args[0];
203
- setNominalForm(data.forms, "nom_sg_m", [stem + "a"]);
204
- setNominalForm(data.forms, "nom_pl_m", [stem + "ae"]);
205
- setNominalForm(data.forms, "nom_pl_n", [stem + "a"]);
206
-
207
- setNominalForm(data.forms, "gen_sg_m", [stem + "ae"]);
208
- setNominalForm(data.forms, "gen_pl_m", [stem + "ārum"]);
209
-
210
- setNominalForm(data.forms, "dat_sg_m", [stem + "ae"]);
211
- setNominalForm(data.forms, "dat_pl_m", [stem + "īs"]);
212
-
213
- setNominalForm(data.forms, "acc_sg_m", [stem + "am"]);
214
- setNominalForm(data.forms, "acc_sg_n", [stem + "a"]);
215
- setNominalForm(data.forms, "acc_pl_m", [stem + "ās"]);
216
- setNominalForm(data.forms, "acc_pl_n", [stem + "a"]);
217
-
218
- setNominalForm(data.forms, "abl_sg_m", [stem + "ā"]);
219
- setNominalForm(data.forms, "abl_pl_m", [stem + "īs"]);
220
-
221
- setNominalForm(data.forms, "loc_sg_m", [stem + "ae"]);
222
- setNominalForm(data.forms, "loc_pl_m", [stem + "īs"]);
223
-
224
- setNominalForm(data.forms, "voc_sg_m", [stem + "a"]);
225
- setNominalForm(data.forms, "voc_pl_m", [stem + "ae"]);
226
-
227
- data.categories.push("Latin first declension " + data.pos);
228
- }],
229
- ["2-2", (data, args) => {
230
- data.title = "second-declension " + singularize(data.pos);
231
- data.subtitles.push("feminine forms identical to masculine forms");
232
-
233
- const stem = args[0];
234
-
235
- let us = "us";
236
- let um = "um";
237
- let i_pl = "ī";
238
-
239
- if (data.types.has(NominalType.greek)) {
240
- data.subtitles.push("Greek-type");
241
- data.categories.push("Latin second declension " + data.pos + " with Greek declension");
242
- us = "os";
243
- um = "on";
244
- i_pl = "oe";
245
- }
246
-
247
- setNominalForm(data.forms, "nom_sg_m", [stem + us]);
248
- setNominalForm(data.forms, "nom_sg_n", [stem + um]);
249
- setNominalForm(data.forms, "nom_pl_m", [stem + i_pl]);
250
- setNominalForm(data.forms, "nom_pl_n", [stem + "a"]);
251
-
252
- setNominalForm(data.forms, "gen_sg_m", [stem + "ī"]);
253
- setNominalForm(data.forms, "gen_sg_n", [stem + "ī"]);
254
- setNominalForm(data.forms, "gen_pl_m", [stem + "ōrum"]);
255
- setNominalForm(data.forms, "gen_pl_n", [stem + "ōrum"]);
256
-
257
- setNominalForm(data.forms, "dat_sg_m", [stem + "ō"]);
258
- setNominalForm(data.forms, "dat_sg_n", [stem + "ō"]);
259
- setNominalForm(data.forms, "dat_pl_m", [stem + "īs"]);
260
- setNominalForm(data.forms, "dat_pl_n", [stem + "īs"]);
261
-
262
- setNominalForm(data.forms, "acc_sg_m", [stem + um]);
263
- setNominalForm(data.forms, "acc_sg_n", [stem + um]);
264
- setNominalForm(data.forms, "acc_pl_m", [stem + "ōs"]);
265
- setNominalForm(data.forms, "acc_pl_n", [stem + "a"]);
266
-
267
- setNominalForm(data.forms, "abl_sg_m", [stem + "ō"]);
268
- setNominalForm(data.forms, "abl_sg_n", [stem + "ō"]);
269
- setNominalForm(data.forms, "abl_pl_m", [stem + "īs"]);
270
- setNominalForm(data.forms, "abl_pl_n", [stem + "īs"]);
271
-
272
- setNominalForm(data.forms, "loc_sg_m", [stem + "ī"]);
273
- setNominalForm(data.forms, "loc_sg_n", [stem + "ī"]);
274
- setNominalForm(data.forms, "loc_pl_m", [stem + "īs"]);
275
- setNominalForm(data.forms, "loc_pl_n", [stem + "īs"]);
276
-
277
- setNominalForm(data.forms, "voc_sg_m", [stem + "e"]);
278
- setNominalForm(data.forms, "voc_sg_n", [stem + um]);
279
- setNominalForm(data.forms, "voc_pl_m", [stem + i_pl]);
280
- setNominalForm(data.forms, "voc_pl_n", [stem + "a"]);
281
-
282
- data.categories.push("Latin second declension " + data.pos);
283
- }],
284
- ["3-1", (data, args) => {
285
- const singpos = singularize(data.pos);
286
- if (data.gender) {
287
- data.title = "third-declension " + singpos;
288
- } else {
289
- data.title = "third-declension one-termination " + singpos;
290
- }
291
-
292
- const stem1 = args[0];
293
- const stem2 = args[1];
294
-
295
- setNominalForm(data.forms, "nom_sg_m", [stem1]);
296
- setNominalForm(data.forms, "nom_sg_n", [stem1]);
297
- setNominalForm(data.forms, "nom_pl_m", [stem2 + "ēs"]);
298
- setNominalForm(data.forms, "nom_pl_n", [stem2 + "ia"]);
299
-
300
- setNominalForm(data.forms, "gen_sg_m", [stem2 + "is"]);
301
- setNominalForm(data.forms, "gen_sg_n", [stem2 + "is"]);
302
- setNominalForm(data.forms, "gen_pl_m", [stem2 + "ium"]);
303
- setNominalForm(data.forms, "gen_pl_n", [stem2 + "ium"]);
304
-
305
- setNominalForm(data.forms, "dat_sg_m", [stem2 + "ī"]);
306
- setNominalForm(data.forms, "dat_sg_n", [stem2 + "ī"]);
307
- setNominalForm(data.forms, "dat_pl_m", [stem2 + "ibus"]);
308
- setNominalForm(data.forms, "dat_pl_n", [stem2 + "ibus"]);
309
-
310
- setNominalForm(data.forms, "acc_sg_m", [stem2 + "em"]);
311
- setNominalForm(data.forms, "acc_sg_n", [stem1]);
312
- setNominalForm(data.forms, "acc_pl_m", [stem2 + "ēs"]);
313
- setNominalForm(data.forms, "acc_pl_n", [stem2 + "ia"]);
314
-
315
- setNominalForm(data.forms, "abl_sg_m", [stem2 + "ī"]);
316
- setNominalForm(data.forms, "abl_sg_n", [stem2 + "ī"]);
317
- setNominalForm(data.forms, "abl_pl_m", [stem2 + "ibus"]);
318
- setNominalForm(data.forms, "abl_pl_n", [stem2 + "ibus"]);
319
-
320
- setNominalForm(data.forms, "loc_sg_m", [stem2 + "ī"]);
321
- setNominalForm(data.forms, "loc_sg_n", [stem2 + "ī"]);
322
- setNominalForm(data.forms, "loc_pl_m", [stem2 + "ibus"]);
323
- setNominalForm(data.forms, "loc_pl_n", [stem2 + "ibus"]);
324
-
325
- setNominalForm(data.forms, "voc_sg_m", [stem1]);
326
- setNominalForm(data.forms, "voc_sg_n", [stem1]);
327
- setNominalForm(data.forms, "voc_pl_m", [stem2 + "ēs"]);
328
- setNominalForm(data.forms, "voc_pl_n", [stem2 + "ia"]);
329
-
330
- if (data.types.has(NominalType.Par)) {
331
- data.subtitles.push("non-i-stem");
332
-
333
- setNominalForm(data.forms, "nom_pl_n", [stem2 + "a"]);
334
- setNominalForm(data.forms, "gen_pl_m", [stem2 + "um"]);
335
- setNominalForm(data.forms, "gen_pl_n", [stem2 + "um"]);
336
- setNominalForm(data.forms, "abl_sg_m", [stem2 + "e"]);
337
- setNominalForm(data.forms, "abl_sg_n", [stem2 + "e"]);
338
- setNominalForm(data.forms, "loc_sg_m", [stem2 + "ī", stem2 + "e"]);
339
- setNominalForm(data.forms, "loc_sg_n", [stem2 + "ī", stem2 + "e"]);
340
- setNominalForm(data.forms, "acc_pl_n", [stem2 + "a"]);
341
- setNominalForm(data.forms, "voc_pl_n", [stem2 + "a"]);
342
- } else if (data.types.has(NominalType.NotPar)) {
343
- data.subtitles.push("i-stem");
344
- }
345
-
346
- const es_base = stem1.match(/^(.*)ēs$/);
347
- if (es_base && es_base[1] == stem2) {
348
- if (data.types.has(NominalType.greek)) {
349
- const note = "It is unknown if Classical Latin preserved (or would have preserved) the shortness of the original Greek short ending.";
350
- setNominalForm(data.forms, "nom_sg_n", [stem2 + "es", stem2 + "ēs"]);
351
- data.notes.set("nom_sg_n1", note);
352
- setNominalForm(data.forms, "acc_sg_n", [stem2 + "es", stem2 + "ēs"]);
353
- data.notes.set("acc_sg_n1", note);
354
- setNominalForm(data.forms, "voc_sg_m", [stem2 + "es", stem2 + "ēs"]);
355
- data.notes.set("voc_sg_m1", note);
356
- setNominalForm(data.forms, "voc_sg_n", [stem2 + "es", stem2 + "ēs"]);
357
- data.notes.set("voc_sg_n1", note);
358
- data.subtitles.push("Greek-type");
359
- } else if (data.types.has(NominalType.Notgreek)) {
360
- data.subtitles.push("non-Greek-type");
361
- }
362
- }
363
-
364
- data.categories.push("Latin third declension " + data.pos);
365
- data.categories.push("Latin third declension " + data.pos + " of one termination");
366
- }],
367
- ["3-C", (data, args) => {
368
- const stem = args[0];
369
- data.types.add(NominalType.Par);
370
- const d = m_adj_decl.get("3-1");
371
- if (!d) {
372
- throw Error("Decl 3-1 not ready");
373
- }
374
- d(data, [stem + "or", stem + "ōr"]);
375
- data.title = "third-declension comparative " + singularize(data.pos);
376
- data.subtitles = [];
377
- setNominalForm(data.forms, "nom_sg_n", [stem + "us"]);
378
- setNominalForm(data.forms, "acc_sg_n", [stem + "us"]);
379
- setNominalForm(data.forms, "voc_sg_n", [stem + "us"]);
380
-
381
- }],
382
- ["3-P", (data, args) => {
383
- const stem1 = args[0];
384
- const stem2 = args[1];
385
-
386
- const d = m_adj_decl.get("3-1");
387
- if (!d) {
388
- throw Error("Decl 3-1 not ready");
389
- }
390
- d(data, args);
391
- data.title = "third-declension participle";
392
-
393
- if (!data.declOpts.suppressAdjPtcForms) {
394
- setNominalForm(data.forms, "abl_sg_m", [stem2 + "e", stem2 + "ī"]);
395
- data.notes.set("abl_sg_m2", "When used purely as an adjective.");
396
- setNominalForm(data.forms, "abl_sg_n", [stem2 + "e", stem2 + "ī"]);
397
- data.notes.set("abl_sg_n2", "When used purely as an adjective.");
398
- } else {
399
- if (data.types.has(NominalType.Participle)) {
400
- setNominalForm(data.forms, "abl_sg_m", [stem2 + "e"]);
401
- setNominalForm(data.forms, "abl_sg_n", [stem2 + "e"]);
402
- } else {
403
- setNominalForm(data.forms, "abl_sg_m", [stem2 + "ī"]);
404
- setNominalForm(data.forms, "abl_sg_n", [stem2 + "ī"]);
405
- }
406
- }
407
-
408
- if (!data.declOpts.suppressNonNeuterIStemAccIs) {
409
- setNominalForm(data.forms, "acc_pl_m", [stem2 + "ēs", stem2 + "īs"]);
410
- } else {
411
- setNominalForm(data.forms, "acc_pl_m", [stem2 + "ēs"]);
412
- }
413
- }],
414
- ["3-2", (data, args) => {
415
- const singpos = singularize(data.pos);
416
- if (data.gender) {
417
- data.title = "third-declension " + singpos;
418
- } else {
419
- data.title = "third-declension two-termination " + singpos;
420
- }
421
-
422
- const stem = args[0];
423
- const stem2 = args[1];
424
-
425
- setNominalForm(data.forms, "nom_sg_m", [stem + "is"]);
426
- setNominalForm(data.forms, "nom_sg_n", [stem + "e"]);
427
- setNominalForm(data.forms, "nom_pl_m", [stem + "ēs"]);
428
- setNominalForm(data.forms, "nom_pl_n", [stem + "ia"]);
429
-
430
- setNominalForm(data.forms, "gen_sg_m", [stem + "is"]);
431
- setNominalForm(data.forms, "gen_sg_n", [stem + "is"]);
432
- setNominalForm(data.forms, "gen_pl_m", [stem + "ium"]);
433
- setNominalForm(data.forms, "gen_pl_n", [stem + "ium"]);
434
-
435
- setNominalForm(data.forms, "dat_sg_m", [stem + "ī"]);
436
- setNominalForm(data.forms, "dat_sg_n", [stem + "ī"]);
437
- setNominalForm(data.forms, "dat_pl_m", [stem + "ibus"]);
438
- setNominalForm(data.forms, "dat_pl_n", [stem + "ibus"]);
439
-
440
- setNominalForm(data.forms, "acc_sg_m", [stem + "em"]);
441
- setNominalForm(data.forms, "acc_sg_n", [stem + "e"]);
442
- if (!data.declOpts.suppressNonNeuterIStemAccIs) {
443
- setNominalForm(data.forms, "acc_pl_m", [stem + "ēs", stem + "īs"]);
444
- } else {
445
- setNominalForm(data.forms, "acc_pl_m", [stem + "ēs"]);
446
- }
447
- setNominalForm(data.forms, "acc_pl_n", [stem + "ia"]);
448
-
449
- setNominalForm(data.forms, "abl_sg_m", [stem + "ī"]);
450
- setNominalForm(data.forms, "abl_sg_n", [stem + "ī"]);
451
- setNominalForm(data.forms, "abl_pl_m", [stem + "ibus"]);
452
- setNominalForm(data.forms, "abl_pl_n", [stem + "ibus"]);
453
-
454
- setNominalForm(data.forms, "loc_sg_m", [stem + "ī"]);
455
- setNominalForm(data.forms, "loc_sg_n", [stem + "ī"]);
456
- setNominalForm(data.forms, "loc_pl_m", [stem + "ibus"]);
457
- setNominalForm(data.forms, "loc_pl_n", [stem + "ibus"]);
458
-
459
- setNominalForm(data.forms, "voc_sg_m", [stem + "is"]);
460
- setNominalForm(data.forms, "voc_sg_n", [stem + "e"]);
461
- setNominalForm(data.forms, "voc_pl_m", [stem + "ēs"]);
462
- setNominalForm(data.forms, "voc_pl_n", [stem + "ia"]);
463
-
464
- data.categories.push("Latin third declension " + data.pos);
465
- data.categories.push("Latin third declension " + data.pos + " of two terminations");
466
- }],
467
- ["3-3", (data, args) => {
468
- const singpos = singularize(data.pos);
469
- if (data.gender) {
470
- data.title = "third-declension " + singpos;
471
- } else {
472
- data.title = "third-declension three-termination " + singpos;
473
- }
474
-
475
- const stem1 = args[0];
476
- const stem2 = args[1];
477
-
478
- setNominalForm(data.forms, "nom_sg_m", [stem1]);
479
- setNominalForm(data.forms, "nom_sg_f", [stem2 + "is"]);
480
- setNominalForm(data.forms, "nom_sg_n", [stem2 + "e"]);
481
- setNominalForm(data.forms, "nom_pl_m", [stem2 + "ēs"]);
482
- setNominalForm(data.forms, "nom_pl_f", [stem2 + "ēs"]);
483
- setNominalForm(data.forms, "nom_pl_n", [stem2 + "ia"]);
484
-
485
- setNominalForm(data.forms, "gen_sg_m", [stem2 + "is"]);
486
- setNominalForm(data.forms, "gen_sg_f", [stem2 + "is"]);
487
- setNominalForm(data.forms, "gen_sg_n", [stem2 + "is"]);
488
- setNominalForm(data.forms, "gen_pl_m", [stem2 + "ium"]);
489
- setNominalForm(data.forms, "gen_pl_f", [stem2 + "ium"]);
490
- setNominalForm(data.forms, "gen_pl_n", [stem2 + "ium"]);
491
-
492
- setNominalForm(data.forms, "dat_sg_m", [stem2 + "ī"]);
493
- setNominalForm(data.forms, "dat_sg_f", [stem2 + "ī"]);
494
- setNominalForm(data.forms, "dat_sg_n", [stem2 + "ī"]);
495
- setNominalForm(data.forms, "dat_pl_m", [stem2 + "ibus"]);
496
- setNominalForm(data.forms, "dat_pl_f", [stem2 + "ibus"]);
497
- setNominalForm(data.forms, "dat_pl_n", [stem2 + "ibus"]);
498
-
499
- setNominalForm(data.forms, "acc_sg_m", [stem2 + "em"]);
500
- setNominalForm(data.forms, "acc_sg_f", [stem2 + "em"]);
501
- setNominalForm(data.forms, "acc_sg_n", [stem2 + "e"]);
502
- setNominalForm(data.forms, "acc_pl_m", [stem2 + "ēs"]);
503
- setNominalForm(data.forms, "acc_pl_f", [stem2 + "ēs"]);
504
- setNominalForm(data.forms, "acc_pl_n", [stem2 + "ia"]);
505
-
506
- setNominalForm(data.forms, "abl_sg_m", [stem2 + "ī"]);
507
- setNominalForm(data.forms, "abl_sg_f", [stem2 + "ī"]);
508
- setNominalForm(data.forms, "abl_sg_n", [stem2 + "ī"]);
509
- setNominalForm(data.forms, "abl_pl_m", [stem2 + "ibus"]);
510
- setNominalForm(data.forms, "abl_pl_f", [stem2 + "ibus"]);
511
- setNominalForm(data.forms, "abl_pl_n", [stem2 + "ibus"]);
512
-
513
- setNominalForm(data.forms, "loc_sg_m", [stem2 + "ī"]);
514
- setNominalForm(data.forms, "loc_sg_f", [stem2 + "ī"]);
515
- setNominalForm(data.forms, "loc_sg_n", [stem2 + "ī"]);
516
- setNominalForm(data.forms, "loc_pl_m", [stem2 + "ibus"]);
517
- setNominalForm(data.forms, "loc_pl_f", [stem2 + "ibus"]);
518
- setNominalForm(data.forms, "loc_pl_n", [stem2 + "ibus"]);
519
-
520
- setNominalForm(data.forms, "voc_sg_m", [stem1]);
521
- setNominalForm(data.forms, "voc_sg_f", [stem2 + "is"]);
522
- setNominalForm(data.forms, "voc_sg_n", [stem2 + "e"]);
523
- setNominalForm(data.forms, "voc_pl_m", [stem2 + "ēs"]);
524
- setNominalForm(data.forms, "voc_pl_f", [stem2 + "ēs"]);
525
- setNominalForm(data.forms, "voc_pl_n", [stem2 + "ia"]);
526
-
527
- data.categories.push("Latin third declension " + data.pos);
528
- data.categories.push("Latin third declension " + data.pos + " of three terminations");
529
- }],
530
- ["irreg", (data, args) => {
531
- if (args[0] == "duo" || args[0] == "ambō") {
532
- const stem = args[0] == "duo" ? "du" : "amb";
533
- data.title = (stem == "amb") ? "irregular adjective" : "numeral";
534
- data.num = NumberTantum.Plural;
535
-
536
- const stem_with_o = stem + (stem == "amb" ? "ō" : "o");
537
- setNominalForm(data.forms, "nom_pl_m", [stem_with_o]);
538
- setNominalForm(data.forms, "nom_pl_f", [stem + "ae"]);
539
- setNominalForm(data.forms, "nom_pl_n", [stem_with_o]);
540
-
541
- setNominalForm(data.forms, "gen_pl_m", [stem + "ōrum"]);
542
- setNominalForm(data.forms, "gen_pl_f", [stem + "ārum"]);
543
- setNominalForm(data.forms, "gen_pl_n", [stem + "ōrum"]);
544
-
545
- setNominalForm(data.forms, "dat_pl_m", [stem + "ōbus"]);
546
- setNominalForm(data.forms, "dat_pl_f", [stem + "ābus"]);
547
- setNominalForm(data.forms, "dat_pl_n", [stem + "ōbus"]);
548
-
549
- setNominalForm(data.forms, "acc_pl_m", [stem + "ōs", stem_with_o]);
550
- setNominalForm(data.forms, "acc_pl_f", [stem + "ās"]);
551
- setNominalForm(data.forms, "acc_pl_n", [stem_with_o]);
552
-
553
- setNominalForm(data.forms, "abl_pl_m", [stem + "ōbus"]);
554
- setNominalForm(data.forms, "abl_pl_f", [stem + "ābus"]);
555
- setNominalForm(data.forms, "abl_pl_n", [stem + "ōbus"]);
556
-
557
- setNominalForm(data.forms, "voc_pl_m", [stem_with_o]);
558
- setNominalForm(data.forms, "voc_pl_f", [stem + "ae"]);
559
- setNominalForm(data.forms, "voc_pl_n", [stem_with_o]);
560
-
561
- if (stem == "du") {
562
- data.footnote = "Note: The genitive masculine and neuter can also be found in the contracted form 'duum' (also spelt 'duûm').";
563
- }
564
- } else if (args[0] == "mīlle") {
565
- data.title = "semi-indeclinable numeral";
566
- setNominalForm(data.forms, "nom_sg_m", ["mīlle"]);
567
- setNominalForm(data.forms, "nom_pl_m", ["mīlia", "mīllia"]);
568
-
569
- setNominalForm(data.forms, "gen_sg_m", ["mīlle"]);
570
- setNominalForm(data.forms, "gen_pl_m", ["mīlium", "mīllium"]);
571
-
572
- setNominalForm(data.forms, "dat_sg_m", ["mīlle"]);
573
- setNominalForm(data.forms, "dat_pl_m", ["mīlibus", "mīllibus"]);
574
-
575
- setNominalForm(data.forms, "acc_sg_m", ["mīlle"]);
576
- setNominalForm(data.forms, "acc_pl_m", ["mīlia", "mīllia"]);
577
-
578
- setNominalForm(data.forms, "abl_sg_m", ["mīlle"]);
579
- setNominalForm(data.forms, "abl_pl_m", ["mīlibus", "mīllibus"]);
580
-
581
- setNominalForm(data.forms, "voc_sg_m", ["mīlle"]);
582
- setNominalForm(data.forms, "voc_pl_m", ["mīlia", "mīllia"]);
583
- } else if (args[0] == "illic") {
584
- data.title = "demonstrative pronoun";
585
- setNominalForm(data.forms, "nom_sg_m", ["illic"]);
586
- setNominalForm(data.forms, "nom_sg_f", ["illaec"]);
587
- setNominalForm(data.forms, "nom_sg_n", ["illuc", "illoc"]);
588
- setNominalForm(data.forms, "nom_pl_n", ["illaec"]);
589
- setNominalForm(data.forms, "nom_pl_m", [""]);
590
- setNominalForm(data.forms, "nom_pl_f", [""]);
591
-
592
- setNominalForm(data.forms, "gen_sg_m", [""]);
593
- setNominalForm(data.forms, "gen_sg_f", [""]);
594
- setNominalForm(data.forms, "gen_sg_n", [""]);
595
- setNominalForm(data.forms, "gen_pl_m", [""]);
596
- setNominalForm(data.forms, "gen_pl_f", [""]);
597
- setNominalForm(data.forms, "gen_pl_n", [""]);
598
-
599
- setNominalForm(data.forms, "dat_sg_m", [""]);
600
- setNominalForm(data.forms, "dat_sg_f", [""]);
601
- setNominalForm(data.forms, "dat_sg_n", [""]);
602
- setNominalForm(data.forms, "dat_pl_m", [""]);
603
- setNominalForm(data.forms, "dat_pl_f", [""]);
604
- setNominalForm(data.forms, "dat_pl_n", [""]);
605
-
606
- setNominalForm(data.forms, "acc_sg_m", ["illunc"]);
607
- setNominalForm(data.forms, "acc_sg_f", ["illanc"]);
608
- setNominalForm(data.forms, "acc_sg_n", ["illuc", "illoc"]);
609
- setNominalForm(data.forms, "acc_pl_m", [""]);
610
- setNominalForm(data.forms, "acc_pl_f", [""]);
611
- setNominalForm(data.forms, "acc_pl_n", ["illaec"]);
612
-
613
- setNominalForm(data.forms, "abl_sg_m", ["illōc"]);
614
- setNominalForm(data.forms, "abl_sg_f", ["illāc"]);
615
- setNominalForm(data.forms, "abl_sg_n", ["illōc"]);
616
- setNominalForm(data.forms, "abl_pl_m", [""]);
617
- setNominalForm(data.forms, "abl_pl_f", [""]);
618
- setNominalForm(data.forms, "abl_pl_n", [""]);
619
-
620
- data.voc = false;
621
- } else if (args[0] == "hice") {
622
- data.title = "demonstrative pronoun";
623
- setNominalForm(data.forms, "nom_sg_m", ["hice"]);
624
- setNominalForm(data.forms, "nom_sg_f", ["haece"]);
625
- setNominalForm(data.forms, "nom_sg_n", ["hoce"]);
626
- setNominalForm(data.forms, "nom_pl_m", ["hīce"]);
627
- setNominalForm(data.forms, "nom_pl_n", ["haece"]);
628
- setNominalForm(data.forms, "nom_pl_f", ["haece"]);
629
-
630
- setNominalForm(data.forms, "gen_sg_m", ["huiusce"]);
631
- setNominalForm(data.forms, "gen_sg_f", ["huiusce"]);
632
- setNominalForm(data.forms, "gen_sg_n", ["huiusce"]);
633
- setNominalForm(data.forms, "gen_pl_m", ["hōrunce", "hōrumce"]);
634
- setNominalForm(data.forms, "gen_pl_f", ["hārunce", "hārumce"]);
635
- setNominalForm(data.forms, "gen_pl_n", ["hōrunce", "hōrumce"]);
636
-
637
- setNominalForm(data.forms, "dat_sg_m", ["huīce"]);
638
- setNominalForm(data.forms, "dat_sg_f", ["huīce"]);
639
- setNominalForm(data.forms, "dat_sg_n", ["huīce"]);
640
- setNominalForm(data.forms, "dat_pl_m", ["hīsce"]);
641
- setNominalForm(data.forms, "dat_pl_f", ["hīsce"]);
642
- setNominalForm(data.forms, "dat_pl_n", ["hīsce"]);
643
-
644
- setNominalForm(data.forms, "acc_sg_m", ["hunce"]);
645
- setNominalForm(data.forms, "acc_sg_f", ["hance"]);
646
- setNominalForm(data.forms, "acc_sg_n", ["hoce"]);
647
- setNominalForm(data.forms, "acc_pl_m", ["hōsce"]);
648
- setNominalForm(data.forms, "acc_pl_f", ["hāsce"]);
649
- setNominalForm(data.forms, "acc_pl_n", ["haece"]);
650
-
651
- setNominalForm(data.forms, "abl_sg_m", ["hōce"]);
652
- setNominalForm(data.forms, "abl_sg_f", ["hāce"]);
653
- setNominalForm(data.forms, "abl_sg_n", ["hōce"]);
654
- setNominalForm(data.forms, "abl_pl_m", ["hīsce"]);
655
- setNominalForm(data.forms, "abl_pl_f", ["hīsce"]);
656
- setNominalForm(data.forms, "abl_pl_n", ["hīsce"]);
657
-
658
- data.voc = false;
659
- } else if (args[0] == "plūs") {
660
- data.title = "irregular third-declension comparative adjective";
661
-
662
- setNominalForm(data.forms, "nom_sg_m", [""]);
663
- setNominalForm(data.forms, "nom_sg_n", ["plūs"]);
664
- setNominalForm(data.forms, "nom_pl_m", ["plūrēs"]);
665
- setNominalForm(data.forms, "nom_pl_n", ["plūra"]);
666
-
667
- setNominalForm(data.forms, "gen_sg_m", [""]);
668
- setNominalForm(data.forms, "gen_sg_n", ["plūris"]);
669
- setNominalForm(data.forms, "gen_pl_m", ["plūrium"]);
670
- setNominalForm(data.forms, "gen_pl_n", ["plūrium"]);
671
-
672
- setNominalForm(data.forms, "dat_sg_m", [""]);
673
- setNominalForm(data.forms, "dat_sg_n", [""]);
674
- setNominalForm(data.forms, "dat_pl_m", ["plūribus"]);
675
- setNominalForm(data.forms, "dat_pl_n", ["plūribus"]);
676
-
677
- setNominalForm(data.forms, "acc_sg_m", [""]);
678
- setNominalForm(data.forms, "acc_sg_n", ["plūs"]);
679
- setNominalForm(data.forms, "acc_pl_m", ["plūrēs"]);
680
- setNominalForm(data.forms, "acc_pl_n", ["plūra"]);
681
-
682
- setNominalForm(data.forms, "abl_sg_m", [""]);
683
- setNominalForm(data.forms, "abl_sg_n", ["plūre"]);
684
- setNominalForm(data.forms, "abl_pl_m", ["plūribus"]);
685
- setNominalForm(data.forms, "abl_pl_n", ["plūribus"]);
686
-
687
- setNominalForm(data.forms, "voc_sg_m", [""]);
688
- setNominalForm(data.forms, "voc_sg_n", ["plūs"]);
689
- setNominalForm(data.forms, "voc_pl_m", ["plūrēs"]);
690
- setNominalForm(data.forms, "voc_pl_n", ["plūra"]);
691
-
692
- data.footnote = "Note: Singular forms take the genitive of the whole and do not function as adjectives.";
693
- data.categories.push("Latin third declension " + data.pos);
694
- data.categories.push("Latin third declension " + data.pos + " of one termination");
695
- } else if (args[0] == "is" || args[0] == "īdem") {
696
- data.title = "demonstrative pronoun";
697
- const note1 = "The dat. singular is found spelled EIEI (here represented as 'ēī') and scanned as two longs in Plautus, but also as a monosyllable. The latter is its normal scansion in Classical. Other spellings include EEI, IEI.";
698
- const note2 = "The nom./dat./abl. plural forms regularly developed into a monosyllable /iː(s)/, with later remodelling - compare the etymology of deus. This /iː/ was normally spelled as EI during and as II after the Republic; a disyllabic 'iī', spelled II, Iꟾ, apears in Silver Age poetry, while disyllabic 'eīs' is only post-Classical. Other spellings include EEI(S), EIEI(S), IEI(S).";
699
-
700
- if (!data.declOpts.suppressRareIrregForms) {
701
- setNominalForm(data.forms, "nom_pl_m", ["ī", "iī", "eī"]);
702
- data.notes.set("nom_pl_m1", note2);
703
-
704
- setNominalForm(data.forms, "dat_sg_m", ["ei", "ēī"]);
705
- data.notes.set("dat_sg_m1", note1);
706
- setNominalForm(data.forms, "dat_sg_f", ["ei", "ēī"]);
707
- data.notes.set("dat_sg_f1", note1);
708
- setNominalForm(data.forms, "dat_sg_n", ["ei", "ēī"]);
709
- data.notes.set("dat_sg_n1", note1);
710
- setNominalForm(data.forms, "dat_pl_m", ["īs", "iīs", "eīs"]);
711
- data.notes.set("dat_pl_m1", note2);
712
- setNominalForm(data.forms, "dat_pl_f", ["īs", "iīs", "eīs"]);
713
- data.notes.set("dat_pl_f1", note2);
714
- setNominalForm(data.forms, "dat_pl_n", ["īs", "iīs", "eīs"]);
715
- data.notes.set("dat_pl_n1", note2);
716
-
717
- setNominalForm(data.forms, "abl_pl_m", ["īs", "iīs", "eīs"]);
718
- data.notes.set("abl_pl_m1", note2);
719
- setNominalForm(data.forms, "abl_pl_f", ["īs", "iīs", "eīs"]);
720
- data.notes.set("abl_pl_f1", note2);
721
- setNominalForm(data.forms, "abl_pl_n", ["īs", "iīs", "eīs"]);
722
- data.notes.set("abl_pl_n1", note2);
723
- } else {
724
- setNominalForm(data.forms, "nom_pl_m", ["iī"]);
725
- setNominalForm(data.forms, "dat_sg_m", ["eī"]);
726
- setNominalForm(data.forms, "dat_sg_f", ["eī"]);
727
- setNominalForm(data.forms, "dat_sg_n", ["eī"]);
728
- setNominalForm(data.forms, "dat_pl_m", ["iīs"]);
729
- setNominalForm(data.forms, "dat_pl_f", ["iīs"]);
730
- setNominalForm(data.forms, "dat_pl_n", ["iīs"]);
731
- setNominalForm(data.forms, "abl_pl_m", ["iīs"]);
732
- setNominalForm(data.forms, "abl_pl_f", ["iīs"]);
733
- setNominalForm(data.forms, "abl_pl_n", ["iīs"]);
734
- }
735
-
736
- setNominalForm(data.forms, "nom_sg_m", ["is"]);
737
- setNominalForm(data.forms, "nom_sg_f", ["ea"]);
738
- setNominalForm(data.forms, "nom_sg_n", ["id"]);
739
- setNominalForm(data.forms, "nom_pl_f", ["eae"]);
740
- setNominalForm(data.forms, "nom_pl_n", ["ea"]);
741
-
742
- setNominalForm(data.forms, "gen_sg_m", ["eius"]);
743
- setNominalForm(data.forms, "gen_sg_f", ["eius"]);
744
- setNominalForm(data.forms, "gen_sg_n", ["eius"]);
745
- setNominalForm(data.forms, "gen_pl_m", ["eōrum"]);
746
- setNominalForm(data.forms, "gen_pl_f", ["eārum"]);
747
- setNominalForm(data.forms, "gen_pl_n", ["eōrum"]);
748
-
749
- setNominalForm(data.forms, "acc_sg_m", ["eum"]);
750
- setNominalForm(data.forms, "acc_sg_f", ["eam"]);
751
- setNominalForm(data.forms, "acc_sg_n", ["id"]);
752
- setNominalForm(data.forms, "acc_pl_m", ["eōs"]);
753
- setNominalForm(data.forms, "acc_pl_f", ["eās"]);
754
- setNominalForm(data.forms, "acc_pl_n", ["ea"]);
755
-
756
- setNominalForm(data.forms, "abl_sg_m", ["eō"]);
757
- setNominalForm(data.forms, "abl_sg_f", ["eā"]);
758
- setNominalForm(data.forms, "abl_sg_n", ["eō"]);
759
-
760
- data.voc = false;
761
-
762
- if (args[0] == "īdem") {
763
- setNominalForm(data.forms, "nom_sg_m", ["ī"]);
764
- setNominalForm(data.forms, "nom_sg_n", ["i"]);
765
- setNominalForm(data.forms, "nom_pl_m", ["ī"]);
766
-
767
- if (!data.declOpts.suppressRareIrregForms) {
768
- setNominalForm(data.forms, "gen_pl_m", ["eōrun", "eōrum"]);
769
- setNominalForm(data.forms, "gen_pl_f", ["eārun", "eārum"]);
770
- setNominalForm(data.forms, "gen_pl_n", ["eōrun", "eōrum"]);
771
- setNominalForm(data.forms, "acc_sg_m", ["eun", "eum"]);
772
- setNominalForm(data.forms, "acc_sg_f", ["ean", "eam"]);
773
- } else {
774
- setNominalForm(data.forms, "gen_pl_m", ["eōrun"]);
775
- setNominalForm(data.forms, "gen_pl_f", ["eārun"]);
776
- setNominalForm(data.forms, "gen_pl_n", ["eōrun"]);
777
- setNominalForm(data.forms, "acc_sg_m", ["eun"]);
778
- setNominalForm(data.forms, "acc_sg_f", ["ean"]);
779
- }
780
- setNominalForm(data.forms, "acc_sg_n", ["i"]);
781
- }
782
- } else if (args[0] == "ille") {
783
- data.types.add(NominalType.Ius);
784
- const d = m_adj_decl.get("1&2");
785
- if (!d) {
786
- throw Error("Decl 1&2 not ready");
787
- }
788
-
789
- d(data, ["ill"]);
790
-
791
- data.title = "demonstrative pronoun";
792
-
793
- setNominalForm(data.forms, "nom_sg_m", ["ille"]);
794
- setNominalForm(data.forms, "nom_sg_n", ["illud"]);
795
-
796
- setNominalForm(data.forms, "acc_sg_n", ["illud"]);
797
-
798
- data.voc = false;
799
- data.categories = [];
800
- } else if (args[0] == "iste") {
801
- data.types.add(NominalType.Ius);
802
- const d = m_adj_decl.get("1&2");
803
- if (!d) {
804
- throw Error("Decl 1&2 not ready");
805
- }
806
-
807
- d(data, ["ist"]);
808
-
809
- data.title = "demonstrative pronoun";
810
-
811
- setNominalForm(data.forms, "nom_sg_m", ["iste"]);
812
- setNominalForm(data.forms, "nom_sg_n", ["istud"]);
813
-
814
- setNominalForm(data.forms, "acc_sg_n", ["istud"]);
815
-
816
- data.voc = false;
817
-
818
- data.categories = [];
819
- } else if (args[0] == "ipse") {
820
- data.types.add(NominalType.Ius);
821
- const d = m_adj_decl.get("1&2");
822
- if (!d) {
823
- throw Error("Decl 1&2 not ready");
824
- }
825
-
826
- d(data, ["ips"]);
827
-
828
- data.title = "demonstrative pronoun";
829
-
830
- setNominalForm(data.forms, "nom_sg_m", ["ipse"]);
831
- setNominalForm(data.forms, "nom_sg_n", ["ipsum"]);
832
-
833
- setNominalForm(data.forms, "acc_sg_n", ["ipsum"]);
834
-
835
- data.voc = false;
836
-
837
- data.categories = [];
838
- } else if (args[0] == "quis" || args[0] == "quī") {
839
- if (data.declOpts.useSimpleQuis) {
840
- let id = "id";
841
- if (args[0] == "quī") {
842
- id = "od";
843
- }
844
- data.title = "relative/interrogative pronoun";
845
- if (args[0] == "quī") {
846
- setNominalForm(data.forms, "nom_sg_m", ["quī"]);
847
- } else {
848
- setNominalForm(data.forms, "nom_sg_m", ["quis"]);
849
- }
850
- setNominalForm(data.forms, "nom_sg_f", ["quae"]);
851
- setNominalForm(data.forms, "nom_sg_n", ["qu" + id]);
852
- setNominalForm(data.forms, "nom_pl_m", ["quī"]);
853
- setNominalForm(data.forms, "nom_pl_f", ["quae"]);
854
- setNominalForm(data.forms, "nom_pl_n", ["quae"]);
855
-
856
- setNominalForm(data.forms, "acc_sg_m", ["quem"]);
857
- setNominalForm(data.forms, "acc_sg_f", ["quam"]);
858
- setNominalForm(data.forms, "acc_sg_n", ["qu" + id]);
859
- setNominalForm(data.forms, "acc_pl_m", ["quōs"]);
860
- setNominalForm(data.forms, "acc_pl_f", ["quās"]);
861
- setNominalForm(data.forms, "acc_pl_n", ["quae"]);
862
-
863
- setNominalForm(data.forms, "gen_sg_m", ["cuius"]);
864
- setNominalForm(data.forms, "gen_sg_f", ["cuius"]);
865
- setNominalForm(data.forms, "gen_sg_n", ["cuius"]);
866
- setNominalForm(data.forms, "gen_pl_m", ["quōrum"]);
867
- setNominalForm(data.forms, "gen_pl_f", ["quārum"]);
868
- setNominalForm(data.forms, "gen_pl_n", ["quōrum"]);
869
-
870
- setNominalForm(data.forms, "dat_sg_m", ["cui"]);
871
- setNominalForm(data.forms, "dat_sg_f", ["cui"]);
872
- setNominalForm(data.forms, "dat_sg_n", ["cui"]);
873
- setNominalForm(data.forms, "dat_pl_m", ["quibus"]);
874
- setNominalForm(data.forms, "dat_pl_f", ["quibus"]);
875
- setNominalForm(data.forms, "dat_pl_n", ["quibus"]);
876
-
877
- setNominalForm(data.forms, "abl_sg_m", ["quō"]);
878
- setNominalForm(data.forms, "abl_sg_f", ["quā"]);
879
- setNominalForm(data.forms, "abl_sg_n", ["quō"]);
880
- setNominalForm(data.forms, "abl_pl_m", ["quibus"]);
881
- setNominalForm(data.forms, "abl_pl_f", ["quibus"]);
882
- setNominalForm(data.forms, "abl_pl_n", ["quibus"]);
883
-
884
- data.voc = false;
885
- } else {
886
- const note1 = "When used as an indefinite pronoun or adjective, the feminine nominative singular and neuter nominative/accusative plural is usually 'qua' instead of 'quae'. Indefinite 'qua' is generally only found directly after the accompanying '[[si#Latin|sī]]', '[[nisi#Latin|nisi]]', '[[num#Latin|num]]', or '[[ne#Latin|nē]]' and may be considered to be either enclitic to it or forming a compound with it; sometimes '[[siqua#Latin|sīqua]]', '[[numqua#Latin|numqua]]', and '[[nequa#Latin|nēqua]]' are written together. The form 'qua' is never found for any form of the interrogative or relative pronouns, nor for the feminine plural of the indefinite pronoun or adjective.";
887
- const note2 = "In Republican Latin or earlier, 'quī' was often spelled as '[[quei]]', 'cuius' as '[[quoius]]', 'cui' as '[[quoi]]' (or '[[quoiei]]'), and 'quīs' as '[[queis]]'.";
888
- let id = "id";
889
-
890
- if (args[0] == "quī") {
891
- id = "od";
892
- setNominalForm(data.forms, "nom_sg_m", ["quī", "quis"]);
893
- setNominalForm(data.forms, "nom_sg_f", ["quae", "qua"]);
894
- setNominalForm(data.forms, "acc_sg_f", ["quam"]);
895
- setNominalForm(data.forms, "abl_sg_m", ["quō"]);
896
- setNominalForm(data.forms, "abl_sg_f", ["quā"]);
897
- setNominalForm(data.forms, "abl_sg_n", ["quō"]);
898
- data.notes.set("nom_sg_m1", note2);
899
- data.notes.set("nom_sg_f2", note1);
900
- } else {
901
- setNominalForm(data.forms, "nom_sg_m", ["quis", "quī"]);
902
- setNominalForm(data.forms, "nom_sg_f", ["quae", "qua", "quis"]);
903
- setNominalForm(data.forms, "acc_sg_f", ["quam", "quem"]);
904
- setNominalForm(data.forms, "abl_sg_m", ["quō", "quī"]);
905
- setNominalForm(data.forms, "abl_sg_f", ["quā", "quī"]);
906
- setNominalForm(data.forms, "abl_sg_n", ["quō", "quī"]);
907
- data.notes.set("nom_sg_m2", note2);
908
- data.notes.set("nom_sg_f2", note1);
909
- }
910
- data.title = "relative/interrogative pronoun";
911
-
912
- setNominalForm(data.forms, "nom_sg_n", ["qu" + id]);
913
- setNominalForm(data.forms, "nom_pl_m", ["quī"]);
914
- setNominalForm(data.forms, "nom_pl_f", ["quae"]);
915
- setNominalForm(data.forms, "nom_pl_n", ["quae", "qua"]);
916
- data.notes.set("nom_pl_m1", note2);
917
- data.notes.set("nom_pl_n2", note1);
918
-
919
- setNominalForm(data.forms, "gen_sg_m", ["cuius"]);
920
- setNominalForm(data.forms, "gen_sg_f", ["cuius"]);
921
- setNominalForm(data.forms, "gen_sg_n", ["cuius"]);
922
- setNominalForm(data.forms, "gen_pl_m", ["quōrum"]);
923
- setNominalForm(data.forms, "gen_pl_f", ["quārum"]);
924
- setNominalForm(data.forms, "gen_pl_n", ["quōrum"]);
925
- data.notes.set("gen_sg_m1", note2);
926
- data.notes.set("gen_sg_f1", note2);
927
- data.notes.set("gen_sg_n1", note2);
928
-
929
- setNominalForm(data.forms, "dat_sg_m", ["cui"]);
930
- setNominalForm(data.forms, "dat_sg_f", ["cui"]);
931
- setNominalForm(data.forms, "dat_sg_n", ["cui"]);
932
- data.notes.set("dat_sg_m1", note2);
933
- data.notes.set("dat_sg_f1", note2);
934
- data.notes.set("dat_sg_n1", note2);
935
-
936
- setNominalForm(data.forms, "dat_pl_m", ["quibus", "quīs"]);
937
- setNominalForm(data.forms, "dat_pl_f", ["quibus", "quīs"]);
938
- setNominalForm(data.forms, "dat_pl_n", ["quibus", "quīs"]);
939
- data.notes.set("dat_pl_m2", note2);
940
- data.notes.set("dat_pl_f2", note2);
941
- data.notes.set("dat_pl_n2", note2);
942
-
943
- setNominalForm(data.forms, "abl_pl_m", ["quibus", "quīs"]);
944
- setNominalForm(data.forms, "abl_pl_f", ["quibus", "quīs"]);
945
- setNominalForm(data.forms, "abl_pl_n", ["quibus", "quīs"]);
946
- data.notes.set("abl_pl_m2", note2);
947
- data.notes.set("abl_pl_f2", note2);
948
- data.notes.set("abl_pl_n2", note2);
949
-
950
- setNominalForm(data.forms, "acc_sg_m", ["quem"]);
951
- setNominalForm(data.forms, "acc_sg_n", ["qu" + id]);
952
- setNominalForm(data.forms, "acc_pl_m", ["quōs"]);
953
- setNominalForm(data.forms, "acc_pl_f", ["quās"]);
954
- setNominalForm(data.forms, "acc_pl_n", ["quae", "qua"]);
955
- data.notes.set("acc_pl_n2", note1);
956
-
957
- data.voc = false;
958
- }
959
- } else if (args[0] == "quisquis") {
960
- data.title = "relative/interrogative pronoun";
961
- setNominalForm(data.forms, "nom_sg_m", ["quisquis"]);
962
- setNominalForm(data.forms, "nom_sg_f", ["quisquis"]);
963
- if (!data.declOpts.suppressRareIrregForms) {
964
- setNominalForm(data.forms, "nom_sg_n", ["quidquid", "quicquid"]);
965
-
966
- setNominalForm(data.forms, "dat_pl_m", ["quibusquibus", "quīsquīs"]);
967
- setNominalForm(data.forms, "dat_pl_f", ["quibusquibus", "quīsquīs"]);
968
- setNominalForm(data.forms, "dat_pl_n", ["quibusquibus", "quīsquīs"]);
969
-
970
- setNominalForm(data.forms, "acc_sg_n", ["quidquid", "quicquid"]);
971
-
972
- setNominalForm(data.forms, "abl_pl_m", ["quibusquibus", "quīsquīs"]);
973
- setNominalForm(data.forms, "abl_pl_f", ["quibusquibus", "quīsquīs"]);
974
- setNominalForm(data.forms, "abl_pl_n", ["quibusquibus", "quīsquīs"]);
975
-
976
- setNominalForm(data.forms, "voc_sg_n", ["quidquid", "quicquid"]);
977
- } else {
978
- setNominalForm(data.forms, "nom_sg_n", ["quidquid"]);
979
-
980
- setNominalForm(data.forms, "dat_pl_m", ["quibusquibus"]);
981
- setNominalForm(data.forms, "dat_pl_f", ["quibusquibus"]);
982
- setNominalForm(data.forms, "dat_pl_n", ["quibusquibus"]);
983
-
984
- setNominalForm(data.forms, "acc_sg_n", ["quidquid"]);
985
-
986
- setNominalForm(data.forms, "abl_pl_m", ["quibusquibus"]);
987
- setNominalForm(data.forms, "abl_pl_f", ["quibusquibus"]);
988
- setNominalForm(data.forms, "abl_pl_n", ["quibusquibus"]);
989
-
990
- setNominalForm(data.forms, "voc_sg_n", ["quidquid"]);
991
- }
992
- setNominalForm(data.forms, "nom_pl_m", ["quīquī"]);
993
- setNominalForm(data.forms, "nom_pl_f", ["quaequae"]);
994
- setNominalForm(data.forms, "nom_pl_n", ["quaequae"]);
995
-
996
- setNominalForm(data.forms, "gen_sg_m", ["cuiuscuius"]);
997
- setNominalForm(data.forms, "gen_sg_f", ["cuiuscuius"]);
998
- setNominalForm(data.forms, "gen_sg_n", ["cuiuscuius"]);
999
- setNominalForm(data.forms, "gen_pl_m", ["quōrumquōrum"]);
1000
- setNominalForm(data.forms, "gen_pl_f", ["quārumquārum"]);
1001
- setNominalForm(data.forms, "gen_pl_n", ["quōrumquōrum"]);
1002
-
1003
- setNominalForm(data.forms, "dat_sg_m", ["cuicui"]);
1004
- setNominalForm(data.forms, "dat_sg_f", ["cuicui"]);
1005
- setNominalForm(data.forms, "dat_sg_n", ["cuicui"]);
1006
-
1007
- setNominalForm(data.forms, "acc_sg_m", ["quemquem"]);
1008
- setNominalForm(data.forms, "acc_sg_f", ["quamquam"]);
1009
- setNominalForm(data.forms, "acc_pl_m", ["quōsquōs"]);
1010
- setNominalForm(data.forms, "acc_pl_f", ["quāsquās"]);
1011
- setNominalForm(data.forms, "acc_pl_n", ["quaequae"]);
1012
-
1013
- setNominalForm(data.forms, "abl_sg_m", ["quōquō"]);
1014
- setNominalForm(data.forms, "abl_sg_f", ["quāquā"]);
1015
- setNominalForm(data.forms, "abl_sg_n", ["quōquō"]);
1016
-
1017
- setNominalForm(data.forms, "voc_sg_m", ["quisquis"]);
1018
- setNominalForm(data.forms, "voc_sg_f", ["quisquis"]);
1019
- setNominalForm(data.forms, "voc_pl_m", ["quīquī"]);
1020
- setNominalForm(data.forms, "voc_pl_f", ["quaequae"]);
1021
- setNominalForm(data.forms, "voc_pl_n", ["quaequae"]);
1022
-
1023
- data.voc = true;
1024
- } else {
1025
- throw Error(`Adjective '${args[0]}' not recognized`);
1026
- }
1027
- }],
1028
- ]);
1029
-
1030
- function singularize(plural: string): string {
1031
- if (plural.match(/xes$/) || plural.match(/[cs]hes$/)) {
1032
- return plural.replace(/es$/, "");
1033
- } else {
1034
- return plural.replace(/s$/, "");
1035
- }
1036
- }