fixed kRaay shee thing

This commit is contained in:
adueck 2025-01-04 21:11:20 -05:00
parent b58c5635da
commit 81086aafc8
4 changed files with 44 additions and 7 deletions

View File

@ -150,7 +150,6 @@ export function renderVerb({
const transitive = object !== undefined; const transitive = object !== undefined;
const king = transitive && isPast ? object : subject; const king = transitive && isPast ? object : subject;
const base = isPast ? "root" : "stem"; const base = isPast ? "root" : "stem";
// #1 get the appropriate root / stem // #1 get the appropriate root / stem
const [vHead, rest] = getRootStem({ const [vHead, rest] = getRootStem({
verb, verb,

View File

@ -2251,8 +2251,27 @@ describe("passive roots and stems", () => {
type: "welded", type: "welded",
left: { left: {
type: "VB", type: "VB",
ps: [{ p: "کړل", f: "kRul" }], ps: [
{ p: "کړل", f: "kRul" },
{
f: "kRulay",
p: "کړلی",
},
{
f: "kRulaay",
p: "کړلای",
},
{
f: "kRay",
p: "کړی",
},
{
f: "kRaay",
p: "کړای",
},
],
}, },
right: { right: {
type: "VB", type: "VB",
ps: { ps: {

View File

@ -30,6 +30,7 @@ import {
makeComplement, makeComplement,
vTransitivity, vTransitivity,
isKedul, isKedul,
addOptionalTailsToPassive,
} from "./rs-helpers"; } from "./rs-helpers";
import { inflectPattern3 } from "./new-inflectors"; import { inflectPattern3 } from "./new-inflectors";
import { fmapSingleOrLengthOpts } from "../fp-ps"; import { fmapSingleOrLengthOpts } from "../fp-ps";
@ -458,7 +459,7 @@ function getPassiveRs(
genderNumber: T.GenderNumber genderNumber: T.GenderNumber
): [[] | [T.VHead], [T.VB]] { ): [[] | [T.VHead], [T.VB]] {
const [vHead, [basicRoot]] = getRoot(verb, genderNumber, aspect); const [vHead, [basicRoot]] = getRoot(verb, genderNumber, aspect);
const longRoot = getLongVB(basicRoot); const longRoot = addOptionalTailsToPassive(getLongVB(basicRoot), aspect);
const kedulVba = getRootStem({ const kedulVba = getRootStem({
verb: statVerb.intransitive, verb: statVerb.intransitive,
aspect, aspect,

View File

@ -209,15 +209,16 @@ export function tlulPerfectiveStem(person: {
]; ];
} }
export const abilityEnding: T.PsString[] = [
{ p: "ی", f: "ay" },
{ p: "ای", f: "aay" },
];
export function addAbilityEnding( export function addAbilityEnding(
vb: T.VB, vb: T.VB,
verb: T.VerbEntry, verb: T.VerbEntry,
aspect: T.Aspect aspect: T.Aspect
): T.VBP { ): T.VBP {
const abilityEnding: T.PsString[] = [
{ p: "ی", f: "ay" },
{ p: "ای", f: "aay" },
];
if (vb.type === "welded") { if (vb.type === "welded") {
return { return {
...vb, ...vb,
@ -301,6 +302,23 @@ export function possiblePPartLengths(vba: T.VBNoLenghts<T.VB>): T.VB {
return vba; return vba;
} }
export function addOptionalTailsToPassive(
vb: T.VBNoLenghts<T.VB>,
aspect: T.Aspect
): T.VBNoLenghts<T.VB> {
if (aspect !== "perfective" || vb.type !== "VB" || vb.ps[0].p !== "کړل") {
return vb;
}
return {
...vb,
ps: [
...vb.ps,
...verbEndingConcat(vb.ps, abilityEnding),
...verbEndingConcat([{ p: "کړ", f: "kR" }], abilityEnding),
],
};
}
export function getLongVB(vb: T.VB): T.VBNoLenghts<T.VB> { export function getLongVB(vb: T.VB): T.VBNoLenghts<T.VB> {
if (vb.type === "welded") { if (vb.type === "welded") {
return { return {