better auto unisex inflection
This commit is contained in:
parent
ddcc8011cc
commit
a303bf6032
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "@lingdocs/pashto-inflector",
|
"name": "@lingdocs/pashto-inflector",
|
||||||
"version": "1.1.6",
|
"version": "1.1.7",
|
||||||
"author": "lingdocs.com",
|
"author": "lingdocs.com",
|
||||||
"description": "A Pashto inflection and verb conjugation engine, inculding React components for displaying Pashto text, inflections, and conjugations",
|
"description": "A Pashto inflection and verb conjugation engine, inculding React components for displaying Pashto text, inflections, and conjugations",
|
||||||
"homepage": "https://verbs.lingdocs.com",
|
"homepage": "https://verbs.lingdocs.com",
|
||||||
|
|
|
@ -412,6 +412,35 @@ const nouns: Array<{
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
// with irregular Pashto plural
|
||||||
|
// TODO: This should work with words like پلویان but not with words like ترورزامن
|
||||||
|
// {
|
||||||
|
// in: {"ts":1527820130,"i":2561,"p":"پلوی","f":"palawéy","g":"palawey","e":"adherent, supporter; the outside or further ox in a team of oxes grinding or threshing","c":"n. m. anim. unisex","ppp":"پلویان","ppf":"palawiyáan"},
|
||||||
|
// out: {
|
||||||
|
// inflections: {
|
||||||
|
// masc: [
|
||||||
|
// [{ p: "پلوی", f: "palawéy" }],
|
||||||
|
// [{ p: "پلوي", f: "palawée" }],
|
||||||
|
// [{ p: "پلویو", f: "palawiyo" }, { p: "پلوو", f: "palawó" }],
|
||||||
|
// ],
|
||||||
|
// fem: [
|
||||||
|
// [{ p: "پلوۍ", f: "palawúy" }],
|
||||||
|
// [{ p: "پلوۍ", f: "palawúy" }],
|
||||||
|
// [{ p: "پلویو", f: "palawúyo" }, { p: "پلوو", f: "palawó" }],
|
||||||
|
// ],
|
||||||
|
// },
|
||||||
|
// plural: {
|
||||||
|
// masc: [
|
||||||
|
// [{ p: "پلویان", f: "palawiyáan" }],
|
||||||
|
// [{ p: "پلویانو", f: "palawiyáano" }],
|
||||||
|
// ],
|
||||||
|
// fem: [
|
||||||
|
// [{ p: "پلویانې", f: "palawiyáane" }],
|
||||||
|
// [{ p: "پلویانو", f: "palawiyáano" }],
|
||||||
|
// ],
|
||||||
|
// },
|
||||||
|
// },
|
||||||
|
// },
|
||||||
// ## MASCULINE
|
// ## MASCULINE
|
||||||
// Masculine regular ending in ی
|
// Masculine regular ending in ی
|
||||||
{
|
{
|
||||||
|
|
|
@ -428,10 +428,8 @@ function makePlural(w: T.DictionaryEntryNoFVars): { plural: T.PluralInflections
|
||||||
if (w.c.includes("n. m.")) return { plural: { masc: plural }};
|
if (w.c.includes("n. m.")) return { plural: { masc: plural }};
|
||||||
if (w.c.includes("n. f.")) return { plural: { fem: plural }};
|
if (w.c.includes("n. f.")) return { plural: { fem: plural }};
|
||||||
}
|
}
|
||||||
// TODO: MAKE ARABIC PLURAL HERE IF THERE IS ARABIC PLURAL
|
|
||||||
const arabicPlural = makeArabicPlural(w);
|
const arabicPlural = makeArabicPlural(w);
|
||||||
const pashtoPlural = makePashtoPlural(w);
|
const pashtoPlural = makePashtoPlural(w);
|
||||||
if (pashtoPlural) return { plural: pashtoPlural, arabicPlural };
|
|
||||||
function addMascPluralSuffix(animate?: boolean, shortSquish?: boolean): T.PluralInflectionSet {
|
function addMascPluralSuffix(animate?: boolean, shortSquish?: boolean): T.PluralInflectionSet {
|
||||||
if (shortSquish && (w.infap === undefined || w.infaf === undefined)) {
|
if (shortSquish && (w.infap === undefined || w.infaf === undefined)) {
|
||||||
throw new Error(`no irregular inflection info for ${w.p} - ${w.ts}`);
|
throw new Error(`no irregular inflection info for ${w.p} - ${w.ts}`);
|
||||||
|
@ -463,6 +461,24 @@ function makePlural(w: T.DictionaryEntryNoFVars): { plural: T.PluralInflections
|
||||||
concatPsString(baseWOutAccents, space, { p: "ګانې", f: "gáane" })
|
concatPsString(baseWOutAccents, space, { p: "ګانې", f: "gáane" })
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
// TODO: This should be possible for words like پلویان but not for words like ترورزامن 🤔
|
||||||
|
// function addFemToPashtoPlural(i: T.PluralInflections): T.UnisexSet<T.PluralInflectionSet> {
|
||||||
|
// if ("fem" in i && "masc" in i) return i;
|
||||||
|
// if (!("masc" in i)) throw new Error("bad pashto plural doesn't even have masculine");
|
||||||
|
// if (endsInConsonant(i.masc[0][0])) {
|
||||||
|
// return {
|
||||||
|
// ...i,
|
||||||
|
// fem: [
|
||||||
|
// i.masc[0].map((x) => concatPsString(x, { p: "ې", f: "e" })) as T.ArrayOneOrMore<T.PsString>,
|
||||||
|
// i.masc[0].map((x) => concatPsString(x, { p: "و", f: "o" })) as T.ArrayOneOrMore<T.PsString>,
|
||||||
|
// ],
|
||||||
|
// };
|
||||||
|
// }
|
||||||
|
// return {
|
||||||
|
// ...i,
|
||||||
|
// fem: i.masc,
|
||||||
|
// };
|
||||||
|
// }
|
||||||
|
|
||||||
const shortSquish = !!w.infap && !w.infap.includes("ا");
|
const shortSquish = !!w.infap && !w.infap.includes("ا");
|
||||||
const anim = w.c?.includes("anim.");
|
const anim = w.c?.includes("anim.");
|
||||||
|
@ -473,8 +489,14 @@ function makePlural(w: T.DictionaryEntryNoFVars): { plural: T.PluralInflections
|
||||||
: (w.c?.includes("n. f."))
|
: (w.c?.includes("n. f."))
|
||||||
? "fem noun"
|
? "fem noun"
|
||||||
: "other";
|
: "other";
|
||||||
|
if (pashtoPlural) return {
|
||||||
|
// TODO: add the pashto plural to words like پلویان but not to words like ترورزامن ?
|
||||||
|
plural: pashtoPlural,
|
||||||
|
arabicPlural,
|
||||||
|
};
|
||||||
if (type === "unisex noun") {
|
if (type === "unisex noun") {
|
||||||
if (endsInConsonant(w) && (!w.infap) && anim) {
|
// doesn't need to be labelled anim - because it's only with animate nouns that you get the unisex - I THINK
|
||||||
|
if (endsInConsonant(w) && (!w.infap)) {
|
||||||
return { arabicPlural, plural: addAnimUnisexPluralSuffix() };
|
return { arabicPlural, plural: addAnimUnisexPluralSuffix() };
|
||||||
}
|
}
|
||||||
if (shortSquish) {
|
if (shortSquish) {
|
||||||
|
|
Loading…
Reference in New Issue