added distinction between habitual and subjunctive equatives

This commit is contained in:
lingdocs 2022-02-17 11:27:00 +04:00
parent 5d939c0c27
commit 6a3fda7212
6 changed files with 182 additions and 37 deletions

View File

@ -1,6 +1,6 @@
{
"name": "@lingdocs/pashto-inflector",
"version": "1.4.6",
"version": "1.5.0",
"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

@ -255,7 +255,7 @@ const formsOfConjugation = (conj: T.VerbConjugation): T.DisplayFormItem[] => [
]),
formula: "Past participle inflected",
secondPronounNeeded: true,
explanation: "The base of all perfect forms. Used on it's own as a sort of weaker form of the present perfect.",
explanation: "The base of all perfect forms. Used on it's own as a sort of abreviated form of the present perfect.",
},
{
label: "Past Perfect",
@ -282,15 +282,27 @@ const formsOfConjugation = (conj: T.VerbConjugation): T.DisplayFormItem[] => [
reorderWithNegative: true,
},
{
label: "Subjunctive/Habitual Perfect",
label: "Habitual Perfect",
form: conj.perfect.habitual,
past: true,
sentence: true,
englishBuilder: (s: T.Person, v: T.EnglishVerbConjugationEc, n: boolean) => ([
`${engSubj(s)} ${engHave(s)}${n ? " not" : ""} ${v[4]}`,
]),
formula: "Past participle inflected + Habitual Equative",
explanation: "Talking about something that will have happened habitually",
reorderWithNegative: true,
},
{
label: "Subjunctive Perfect",
form: conj.perfect.subjunctive,
past: true,
sentence: true,
englishBuilder: (s: T.Person, v: T.EnglishVerbConjugationEc, n: boolean) => ([
`that ${engSubj(s, true)} will have${n ? " not" : ""} ${v[4]}`,
]),
formula: "Past participle inflected + Subjunctive/Habitual Equative",
explanation: "Talking about something that will have happened habitually, or expressing hope, desire, or judgement about an action having happened",
formula: "Past participle inflected + Subjunctive Equative",
explanation: "expressing hope, desire, or judgement about an action having happened",
reorderWithNegative: true,
},
{
@ -566,8 +578,8 @@ const formsOfConjugation = (conj: T.VerbConjugation): T.DisplayFormItem[] => [
englishBuilder: (s: T.Person, v: T.EnglishVerbConjugationEc, n: boolean) => ([
`${engSubj(s)} ${engHave(s)}${n ? " not" : ""} been ${v[4]}`,
]),
formula: "Infinitive + کېدل (to be) past participle inflected",
explanation: "The base of all perfect forms. Used on it's own as a sort of weaker form of the present perfect. (Passive voice)",
formula: "Infinitive + کېدل past participle inflected",
explanation: "The base of all perfect forms. Used on it's own as a sort of abbreviated form of the present perfect. (Passive voice)",
},
{
label: "Passive Past Perfect",
@ -578,7 +590,7 @@ const formsOfConjugation = (conj: T.VerbConjugation): T.DisplayFormItem[] => [
englishBuilder: (s: T.Person, v: T.EnglishVerbConjugationEc, n: boolean) => ([
`${engSubj(s)} had${n ? " not" : ""} been ${v[4]}`,
]),
formula: "Infinitive + کېدل (to be) past participle inflected + Past Equative",
formula: "Infinitive + کېدل past participle inflected + Past Equative",
explanation: "Talking about events that had happened in the past, or had affected a past situation (Passive voice) ('I had been ____ed')",
},
{
@ -590,11 +602,22 @@ const formsOfConjugation = (conj: T.VerbConjugation): T.DisplayFormItem[] => [
englishBuilder: (s: T.Person, v: T.EnglishVerbConjugationEc, n: boolean) => ([
`${engSubj(s)} ${engHave(s)}${n ? " not" : ""} been ${v[4]}`,
]),
formula: "Infinitive + کېدل (to be) past participle inflected + Present Equative",
formula: "Infinitive + کېدل past participle inflected + Present Equative",
explanation: "Talking about that something happened in the past and it affects the present (Passive voice) ('I have been _____ed')",
},
{
label: "Passive Subjunctive/Habitual Perfect",
label: "Passive Habitual Perfect",
form: conj.passive.perfect.subjunctive,
past: true,
sentence: true,
passive: true,
englishBuilder: (s: T.Person, v: T.EnglishVerbConjugationEc, n: boolean) => ([
`${engSubj(s)} ${engHave(s)}${n ? " not" : ""} been ${v[4]}`,
]),
formula: "Infinitive + کېدل past participle inflected + Habitual Equative",
},
{
label: "Passive Subjunctive Perfect",
form: conj.passive.perfect.subjunctive,
past: true,
sentence: true,
@ -602,7 +625,7 @@ const formsOfConjugation = (conj: T.VerbConjugation): T.DisplayFormItem[] => [
englishBuilder: (s: T.Person, v: T.EnglishVerbConjugationEc, n: boolean) => ([
`that ${engSubj(s, true)} will${n ? " not" : ""} have been ${v[4]}`,
]),
formula: "Infinitive + کېدل (to be) past participle inflected + Subjunctive/Habitual Equative",
formula: "Infinitive + کېدل past participle inflected + Subjunctive Equative",
},
{
label: "Passive Future/Presumptive Perfect",
@ -614,7 +637,7 @@ const formsOfConjugation = (conj: T.VerbConjugation): T.DisplayFormItem[] => [
englishBuilder: (s: T.Person, v: T.EnglishVerbConjugationEc, n: boolean) => ([
`${engSubj(s)} will${n ? " not" : ""} have been ${v[4]}`,
]),
formula: "به - ba + Infinitive + کېدل (to be) past participle inflected + Future Equative",
formula: "به - ba + Infinitive + کېدل past participle inflected + Future Equative",
explanation: "Talking about something that will have happened in the future, or guessing that the event will have occured presently (Passive voice) ('I will have been ____ed')",
},
{
@ -628,7 +651,7 @@ const formsOfConjugation = (conj: T.VerbConjugation): T.DisplayFormItem[] => [
`${engSubj(s)} will${n ? " not" : ""} have been ${v[4]}`,
]),
explanation: "Affirming that an event will have taken place (Passive voice) ('I will have been ____ed')",
formula: "به - ba + Infinitive + کېدل (to be) past participle inflected + Past Equative"
formula: "به - ba + Infinitive + کېدل past participle inflected + Past Equative"
},
{
label: "Passive Past Subjunctive / Hypothetical Perfect",
@ -638,7 +661,7 @@ const formsOfConjugation = (conj: T.VerbConjugation): T.DisplayFormItem[] => [
sentence: true,
passive: true,
explanation: "Talking about an event that would have hypothetically taken place, or that should have taken place (Passive voice) ('I would have been ____ed')",
formula: "به - ba + Infinitive + کېدل (to be) past participle inflected + Past Subjunctive / Hypothetical Equative"
formula: "به - ba + Infinitive + کېدل past participle inflected + Past Subjunctive / Hypothetical Equative"
},
],
},

View File

@ -180,6 +180,7 @@ export const englishEquative: {
export const equativeEndings: {
past: T.LengthOptions<T.VerbBlock>,
present: T.VerbBlock,
habitual: T.VerbBlock,
subjunctive: T.VerbBlock,
pastSubjunctive: T.VerbBlock,
} = {
@ -378,45 +379,107 @@ export const equativeEndings: {
}]
],
],
habitual: [
[
[{
p: "یم",
f: "yum"
}],
[{
p: "یو",
f: "yoo"
}]
],
[
[{
p: "یم",
f: "yum"
}],
[{
p: "یو",
f: "yoo"
}]
],
[
[{
p: "یې",
f: "ye"
}],
[{
p: "یئ",
f: "yeyy"
}]
],
[
[{
p: "یې",
f: "ye"
}],
[{
p: "یئ",
f: "yeyy"
}]
],
[
[{
p: "وي",
f: "wee"
}],
[{
p: "وي",
f: "wee"
}]
],
[
[{
p: "وي",
f: "wee"
}],
[{
p: "وي",
f: "wee"
}]
],
],
subjunctive: [
[
[{
p: "یم",
f: "yum"
p: "وم",
f: "wum"
}],
[{
p: "یو",
f: "yoo"
p: "وو",
f: "woo"
}]
],
[
[{
p: "یم",
f: "yum"
p: "وم",
f: "wum"
}],
[{
p: "یو",
f: "yoo"
p: "وو",
f: "woo"
}]
],
[
[{
p: "یې",
f: "ye"
p: "وې",
f: "we"
}],
[{
p: "یئ",
f: "yeyy"
p: "وئ",
f: "weyy"
}]
],
[
[{
p: "یې",
f: "ye"
p: "وې",
f: "we"
}],
[{
p: "یئ",
f: "yeyy"
p: "وئ",
f: "weyy"
}]
],
[

View File

@ -258,7 +258,7 @@ export const kedulStat: T.VerbConjugation = {
[[{p: "شوی دی", f: "shuwey dey"}], [{p: "شوي دي", f: "shuwee dee"}]],
[[{p: "شوې ده", f: "shuwe da"}], [{p: "شوې دي", f: "shuwe dee"}]],
],
subjunctive: [
habitual: [
[[{p: "شوی یم", f: "shuwey yum"}], [{p: "شوي یو", f: "shuwee yoo"}]],
[[{p: "شوې یم", f: "shuwe yum"}], [{p: "شوې یو", f: "shuwe yoo"}]],
[[{p: "شوی یې", f: "shuwey ye"}], [{p: "شوي یئ", f: "shuwee yeyy"}]],
@ -266,6 +266,14 @@ export const kedulStat: T.VerbConjugation = {
[[{p: "شوی وي", f: "shuwey wee"}], [{p: "شوي وي", f: "shuwee wee"}]],
[[{p: "شوې وي", f: "shuwe wee"}], [{p: "شوې وي", f: "shuwe wee"}]],
],
subjunctive: [
[[{p: "شوی وم", f: "shuwey wum"}], [{p: "شوي وو", f: "shuwee woo"}]],
[[{p: "شوې وم", f: "shuwe wum"}], [{p: "شوې وو", f: "shuwe woo"}]],
[[{p: "شوی وې", f: "shuwey we"}], [{p: "شوي وئ", f: "shuwee weyy"}]],
[[{p: "شوې وې", f: "shuwe we"}], [{p: "شوې وئ", f: "shuwe weyy"}]],
[[{p: "شوی وي", f: "shuwey wee"}], [{p: "شوي وي", f: "shuwee wee"}]],
[[{p: "شوې وي", f: "shuwe wee"}], [{p: "شوې وي", f: "shuwe wee"}]],
],
future: [
[[{p: "به شوی یم", f: "ba shuwey yum"}], [{p: "به شوي یو", f: "ba shuwee yoo"}]],
[[{p: "به شوې یم", f: "ba shuwe yum"}], [{p: "به شوې یو", f: "ba shuwe yoo"}]],
@ -473,7 +481,7 @@ export const kedulDyn: T.VerbConjugation = {
[[{p: "شوی دی", f: "shuwey dey"}], [{p: "شوي دي", f: "shuwee dee"}]],
[[{p: "شوې ده", f: "shuwe da"}], [{p: "شوې دي", f: "shuwe dee"}]],
],
subjunctive: [
habitual: [
[[{p: "شوی یم", f: "shuwey yum"}], [{p: "شوي یو", f: "shuwee yoo"}]],
[[{p: "شوې یم", f: "shuwe yum"}], [{p: "شوې یو", f: "shuwe yoo"}]],
[[{p: "شوی یې", f: "shuwey ye"}], [{p: "شوي یئ", f: "shuwee yeyy"}]],
@ -481,6 +489,14 @@ export const kedulDyn: T.VerbConjugation = {
[[{p: "شوی وي", f: "shuwey wee"}], [{p: "شوي وي", f: "shuwee wee"}]],
[[{p: "شوې وي", f: "shuwe wee"}], [{p: "شوې وي", f: "shuwe wee"}]],
],
subjunctive: [
[[{p: "شوی وم", f: "shuwey wum"}], [{p: "شوي وو", f: "shuwee woo"}]],
[[{p: "شوې وم", f: "shuwe wum"}], [{p: "شوې وو", f: "shuwe woo"}]],
[[{p: "شوی وې", f: "shuwey we"}], [{p: "شوي وئ", f: "shuwee weyy"}]],
[[{p: "شوې وې", f: "shuwe we"}], [{p: "شوې وئ", f: "shuwe weyy"}]],
[[{p: "شوی وي", f: "shuwey wee"}], [{p: "شوي وي", f: "shuwee wee"}]],
[[{p: "شوې وي", f: "shuwe wee"}], [{p: "شوې وي", f: "shuwe wee"}]],
],
future: [
[[{p: "به شوی یم", f: "ba shuwey yum"}], [{p: "به شوي یو", f: "ba shuwee yoo"}]],
[[{p: "به شوې یم", f: "ba shuwe yum"}], [{p: "به شوې یو", f: "ba shuwe yoo"}]],
@ -608,7 +624,7 @@ const kawulPerfect: T.PerfectContent = {
[[{p: "کړی دی", f: "kúRey dey"}], [{p: "کړي دي", f: "kúRee dee"}]],
[[{p: "کړې ده", f: "kúRe da"}], [{p: "کړې دي", f: "kúRe dee"}]],
],
subjunctive: [
habitual: [
[[{p: "کړی یم", f: "kúRey yum"}], [{p: "کړي یو", f: "kúRee yoo"}]],
[[{p: "کړې یم", f: "kúRe yum"}], [{p: "کړې یو", f: "kúRe yoo"}]],
[[{p: "کړی یې", f: "kúRey ye"}], [{p: "کړي یئ", f: "kúRee yeyy"}]],
@ -616,6 +632,14 @@ const kawulPerfect: T.PerfectContent = {
[[{p: "کړی وي", f: "kúRey wee"}], [{p: "کړي وي", f: "kúRee wee"}]],
[[{p: "کړې وي", f: "kúRe wee"}], [{p: "کړې وي", f: "kúRe wee"}]],
],
subjunctive: [
[[{p: "کړی وم", f: "kúRey wum"}], [{p: "کړي وو", f: "kúRee woo"}]],
[[{p: "کړې وم", f: "kúRe wum"}], [{p: "کړې وو", f: "kúRe woo"}]],
[[{p: "کړی وې", f: "kúRey we"}], [{p: "کړي وئ", f: "kúRee weyy"}]],
[[{p: "کړې وې", f: "kúRe we"}], [{p: "کړې وئ", f: "kúRe weyy"}]],
[[{p: "کړی وي", f: "kúRey wee"}], [{p: "کړي وي", f: "kúRee wee"}]],
[[{p: "کړې وي", f: "kúRe wee"}], [{p: "کړې وي", f: "kúRe wee"}]],
],
future: [
[[{p: "به کړی یم", f: "ba kúRey yum"}], [{p: "به کړي یو", f: "ba kúRee yoo"}]],
[[{p: "به کړې یم", f: "ba kúRe yum"}], [{p: "به کړې یو", f: "ba kúRe yoo"}]],
@ -1858,7 +1882,7 @@ export const tlul: T.VerbConjugation = {
[[{p: "تللې ده", f: "tlúle da"}], [{p: "تللې دي", f: "tlúle dee"}]],
],
},
subjunctive: {
habitual: {
short: [
[[{p: "تلی یم", f: "túley yum"}], [{p: "تلي یو", f: "túlee yoo"}]],
[[{p: "تلې یم", f: "túle yum"}], [{p: "تلې یو", f: "túle yoo"}]],
@ -1876,6 +1900,24 @@ export const tlul: T.VerbConjugation = {
[[{p: "تللې وي", f: "tlúle wee"}], [{p: "تللې وي", f: "tlúle wee"}]],
],
},
subjunctive: {
short: [
[[{p: "تلی وم", f: "túley wum"}], [{p: "تلي وو", f: "túlee woo"}]],
[[{p: "تلې وم", f: "túle wum"}], [{p: "تلې وو", f: "túle woo"}]],
[[{p: "تلی وې", f: "túley we"}], [{p: "تلي وئ", f: "túlee weyy"}]],
[[{p: "تلې وې", f: "túle we"}], [{p: "تلې وئ", f: "túle weyy"}]],
[[{p: "تلی وي", f: "túley wee"}], [{p: "تلي وي", f: "túlee wee"}]],
[[{p: "تلې وي", f: "túle wee"}], [{p: "تلې وي", f: "túle wee"}]],
],
long: [
[[{p: "تللی وم", f: "tlúley wum"}], [{p: "تللي وو", f: "tlúlee woo"}]],
[[{p: "تللې وم", f: "tlúle wum"}], [{p: "تللې وو", f: "tlúle woo"}]],
[[{p: "تللی وې", f: "tlúley we"}], [{p: "تللي وئ", f: "tlúlee weyy"}]],
[[{p: "تللې وې", f: "tlúle we"}], [{p: "تللې وئ", f: "tlúle weyy"}]],
[[{p: "تللی وي", f: "tlúley wee"}], [{p: "تللي وي", f: "tlúlee wee"}]],
[[{p: "تللې وي", f: "tlúle wee"}], [{p: "تللې وي", f: "tlúle wee"}]],
],
},
future: {
short: [
[[{p: "به تلی یم", f: "ba túley yum"}], [{p: "به تلي یو", f: "ba túlee yoo"}]],
@ -2311,7 +2353,7 @@ export const warkawul: T.VerbConjugation = {
[[{p: "ورکړی دی", f: "wărkúRey dey"}], [{p: "ورکړي دي", f: "wărkúRee dee"}]],
[[{p: "ورکړې ده", f: "wărkúRe da"}], [{p: "ورکړې دي", f: "wărkúRe dee"}]],
],
subjunctive: [
habitual: [
[[{p: "ورکړی یم", f: "wărkúRey yum"}], [{p: "ورکړي یو", f: "wărkúRee yoo"}]],
[[{p: "ورکړې یم", f: "wărkúRe yum"}], [{p: "ورکړې یو", f: "wărkúRe yoo"}]],
[[{p: "ورکړی یې", f: "wărkúRey ye"}], [{p: "ورکړي یئ", f: "wărkúRee yeyy"}]],
@ -2319,6 +2361,14 @@ export const warkawul: T.VerbConjugation = {
[[{p: "ورکړی وي", f: "wărkúRey wee"}], [{p: "ورکړي وي", f: "wărkúRee wee"}]],
[[{p: "ورکړې وي", f: "wărkúRe wee"}], [{p: "ورکړې وي", f: "wărkúRe wee"}]],
],
subjunctive: [
[[{p: "ورکړی وم", f: "wărkúRey wum"}], [{p: "ورکړي وو", f: "wărkúRee woo"}]],
[[{p: "ورکړې وم", f: "wărkúRe wum"}], [{p: "ورکړې وو", f: "wărkúRe woo"}]],
[[{p: "ورکړی وې", f: "wărkúRey we"}], [{p: "ورکړي وئ", f: "wărkúRee weyy"}]],
[[{p: "ورکړې وې", f: "wărkúRe we"}], [{p: "ورکړې وئ", f: "wărkúRe weyy"}]],
[[{p: "ورکړی وي", f: "wărkúRey wee"}], [{p: "ورکړي وي", f: "wărkúRee wee"}]],
[[{p: "ورکړې وي", f: "wărkúRe wee"}], [{p: "ورکړې وي", f: "wărkúRe wee"}]],
],
future: [
[[{p: "به ورکړی یم", f: "ba wărkúRey yum"}], [{p: "به ورکړي یو", f: "ba wărkúRee yoo"}]],
[[{p: "به ورکړې یم", f: "ba wărkúRe yum"}], [{p: "به ورکړې یو", f: "ba wărkúRe yoo"}]],

View File

@ -79,7 +79,6 @@ export function conjugateVerb(entry: T.DictionaryEntry, complement?: T.Dictionar
const nonComboInfo = info as T.NonComboVerbInfo;
// TODO: Handle verbs like چيغه کول
const conjugation: T.VerbConjugation = {
info: nonComboInfo,
imperfective: makeAspectContent(nonComboInfo, "imperfective"),
@ -161,10 +160,11 @@ function conjugateDynamicCompound(info: T.DynamicCompoundVerbInfo): T.VerbConjug
// @ts-ignore
: concatPsString(complement, " ", auxPPart)
}
const makePerfect = (pset: T.PerfectContent) => ({
const makePerfect = (pset: T.PerfectContent): T.PerfectContent => ({
halfPerfect: addToForm([complement, " "], pset.halfPerfect),
past: addToForm([complement, " "], pset.past),
present: addToForm([complement, " "], pset.present),
habitual: addToForm([complement, " "], pset.habitual),
subjunctive: addToForm([complement, " "], pset.subjunctive),
future: addToForm([complement, " "], pset.future),
affirmational: addToForm([complement, " "], pset.affirmational),
@ -398,6 +398,7 @@ function makePerfectContent(info: T.NonComboVerbInfo): T.PerfectContent {
const halfPerfect = addToForm([...pastPart], emptyVerbBlock);
const past = addToForm([...pastPart, " "], equativeEndings.past.short);
const present = addToForm([...pastPart, " "], equativeEndings.present);
const habitual = addToForm([...pastPart, " "], equativeEndings.habitual);
const subjunctive = addToForm([...pastPart, " "], equativeEndings.subjunctive);
const future = addToForm([baParticle, " ", ...pastPart, " "], equativeEndings.subjunctive);
const affirmational = addToForm([baParticle, " ", ...pastPart, " "], equativeEndings.past.short);
@ -406,6 +407,7 @@ function makePerfectContent(info: T.NonComboVerbInfo): T.PerfectContent {
halfPerfect, // Past Participle
past, // Past Participle + Past Equative
present, // Past Participle + Present Equative
habitual, // Past Participle + Habitual Equative
subjunctive, // Past Participle + Subjunctive Equative
future, // به - ba + Past Participle + Future/Subj Equative
affirmational, // به - ba + Past Participle + Past Equative
@ -483,6 +485,10 @@ function makePassivePerfectContent(info: T.StativeCompoundVerbInfo): T.PerfectCo
[info.complement, " ", passiveStativeBridge, " ", pPart, " "],
equativeEndings.present,
);
const habitual = addToForm(
[info.complement, " ", passiveStativeBridge, " ", pPart, " "],
equativeEndings.habitual,
);
const subjunctive = addToForm(
[info.complement, " ", passiveStativeBridge, " ", pPart, " "],
equativeEndings.subjunctive,
@ -503,6 +509,7 @@ function makePassivePerfectContent(info: T.StativeCompoundVerbInfo): T.PerfectCo
halfPerfect,
past,
present,
habitual,
subjunctive,
future,
affirmational,
@ -532,6 +539,7 @@ function enforceObject(conj: T.VerbConjugation, person: T.Person): T.VerbConjuga
halfPerfect: allOnePersonVerbForm(perf.halfPerfect, person),
past: allOnePersonVerbForm(perf.past, person),
present: allOnePersonVerbForm(perf.present, person),
habitual: allOnePersonInflection(perf.habitual, person),
subjunctive: allOnePersonInflection(perf.subjunctive, person),
future: allOnePersonVerbForm(perf.future, person),
affirmational: allOnePersonVerbForm(perf.affirmational, person),

View File

@ -329,6 +329,7 @@ export type PerfectContent = {
halfPerfect: VerbForm; // PPART
past: VerbForm; // PPART + equative.past
present: VerbForm; // PPART + equative.prest
habitual: VerbForm; // PPART + equative.habit
subjunctive: VerbForm; // PPART + equative.subj
future: VerbForm; // ba + PPART + equative.subj
affirmational: VerbForm; // ba + PPART + equative.past