more on english verb conjugation

This commit is contained in:
lingdocs 2021-07-07 14:27:04 +03:00
parent 608253556d
commit ee109b2669
4 changed files with 17 additions and 4 deletions

View File

@ -1,6 +1,6 @@
{
"name": "@lingdocs/pashto-inflector",
"version": "0.6.2",
"version": "0.6.3",
"author": "lingdocs.com",
"description": "A Pashto inflection and verb conjugation engine, inculding React components for displaying Pashto text, inflections, and conjugations",
"homepage": "https://verbs.lingdocs.com",

View File

@ -14,7 +14,11 @@ test("parseEc should work", () => {
expect(parseEc("walk")).toEqual(["walk", "walks", "walking", "walked", "walked"]);
expect(parseEc("scare")).toEqual(["scare", "scares", "scaring", "scared", "scared"]);
expect(parseEc("study")).toEqual(["study","studies","studying","studied","studied"]);
expect(parseEc("cry")).toEqual(["cry", "cries", "crying", "cried", "cried"]);
expect(parseEc("die")).toEqual(["die", "dies", "dying", "died", "died"]);
expect(parseEc("play")).toEqual(["play","plays","playing","played","played"]);
// if there are only four items the perfect will be the same as the simple past
expect(parseEc("think,thinks,thinking,thought")).toEqual(["think","thinks","thinking","thought","thought"]);
expect(parseEc("sew,sews,sewing,sewed,sown")).toEqual(["sew", "sews", "sewing", "sewed", "sown"]);
expect(parseEc(" sew, sews,sewing ,sewed, sown")).toEqual(["sew", "sews", "sewing", "sewed", "sown"]);
});

View File

@ -223,15 +223,21 @@ export function parseEc(ec: string): T.EnglishVerbConjugationEc {
const b = s.slice(0, -1);
return [`${s}`, `${b}ies`, `${s}ing`, `${b}ied`, `${b}ied`];
}
if (s.slice(-2) === "ie" && !isVowel(s.slice(-3)[0])) {
const b = s.slice(0, -2);
return [`${s}`, `${s}s`, `${b}ying`, `${s}d`, `${s}d`];
}
const b = (s.slice(-1) === "e")
? s.slice(0, -1)
: s;
return [`${s}`, `${s}s`, `${b}ing`, `${b}ed`, `${b}ed`];
}
const items = ec.split(",").map(x => x.trim());
return (items.length !== 5)
? makeRegularConjugations(items[0])
: [items[0], items[1], items[2], items[3], items[4]];
return (items.length === 4)
? [items[0], items[1], items[2], items[3], items[3]]
: (items.length === 5)
? [items[0], items[1], items[2], items[3], items[4]]
: makeRegularConjugations(items[0]);
}
// not being used

View File

@ -54,6 +54,9 @@ const getAayTail = (type: T.AayTail): T.PsString => (
);
export function conjugateVerb(entry: T.DictionaryEntry, aayTailType: T.AayTail, complement?: T.DictionaryEntry, verbInfo?: T.NonComboVerbInfo): T.VerbOutput {
if (!(entry.c && entry.c.slice(0, 2) === "v.")) {
throw new Error("not a verb");
};
const irregularConj = checkForIrregularConjugation(entry);
if (irregularConj) {
return irregularConj;