pashto-grammar/src/lib/block-generators/np-adj-generator.ts

109 lines
1.8 KiB
TypeScript

import {
Types as T,
makeNounSelection,
makeAdjectiveSelection,
randFromArray,
} from "@lingdocs/ps-react";
import { makePool } from "../pool";
import { wordQuery } from "../../words/words";
const nouns = wordQuery("nouns", [
"saRay",
"xudza",
"maashoom",
"Ustaaz",
"puxtoon",
"DaakTar",
"halik",
"tajriba",
"melma",
"khabura",
"kitaab",
"oobu",
"korba",
"shpoon",
"gaawanDay",
"lmasay",
"lobghaaRay",
"sandurghaaRay",
"malguray",
"shpoonkay",
"khalk",
"ghul",
"khur",
]);
const adjectives = wordQuery("adjectives", [
"muR",
"jzwunday",
"sheen",
"soor",
"rixtoonay",
"pakhwaanay",
"stuRay",
"ooGd",
"ghuT",
"xu",
"khufa",
"takRa",
"puT",
"tuGay",
"koochnay",
"wroostay",
"praday",
"treew",
"zoR",
"moR",
"treekh",
"oom",
"khoG",
"droond",
"loomRay",
"Roond",
"prot",
"soR",
"post",
"pokh",
"rooN",
"woR",
"tod",
"khpor",
"kooN",
"koG",
"zeeG",
"naast",
]);
export function makeNPAdjGenerator(
pluralsLevel: "none" | "low" | "high"
): () => T.NPSelection {
const nounPool = makePool(nouns);
const adjPool = makePool(adjectives);
return () => {
const ns = makeNounSelection(nounPool(), undefined);
const selection: T.NounSelection = {
...ns,
adjectives: [makeAdjectiveSelection(adjPool())],
...(ns.numberCanChange && pluralsLevel !== "none"
? {
number: randFromArray(
pluralsLevel === "high"
? ["singular", "plural", "plural", "plural", "singular"]
: ["singular", "plural", "singular"]
),
}
: {}),
...(ns.genderCanChange
? {
gender: randFromArray(["masc", "fem", "fem", "fem", "masc"]),
}
: {}),
};
return {
type: "NP",
selection,
};
};
}