more
This commit is contained in:
parent
91fe08f33d
commit
21a0efdd8a
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@lingdocs/pashto-inflector",
|
||||
"version": "3.7.5",
|
||||
"version": "3.7.6",
|
||||
"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",
|
||||
|
|
|
@ -1,6 +1,34 @@
|
|||
import * as T from "../../types";
|
||||
import { getLength } from "../p-text-helpers";
|
||||
|
||||
export function isRenderedVerbB(block: T.Block["block"]): block is T.RenderedVerbB {
|
||||
if (block.type === "modalVerbBlock") {
|
||||
return true;
|
||||
}
|
||||
if (block.type === "modalVerbKedulPart") {
|
||||
return true;
|
||||
}
|
||||
if (block.type === "perfectEquativeBlock") {
|
||||
return true;
|
||||
}
|
||||
if (block.type === "perfectParticipleBlock") {
|
||||
return true;
|
||||
}
|
||||
if (block.type === "perfectiveHead") {
|
||||
return true;
|
||||
}
|
||||
if (block.type === "verb") {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
export function getVerbBlocks(blocks: T.Block[][]): T.RenderedVerbB[] {
|
||||
return blocks[0]
|
||||
.filter(b => isRenderedVerbB(b.block))
|
||||
.map(b => b.block) as T.RenderedVerbB[];
|
||||
}
|
||||
|
||||
export function makeBlock(block: T.Block["block"], key?: number): T.Block {
|
||||
return {
|
||||
key: key === undefined ? Math.random() : key,
|
||||
|
|
|
@ -29,7 +29,7 @@ const blank: T.PsString = {
|
|||
p: "_____",
|
||||
f: "_____",
|
||||
};
|
||||
type BlankoutOptions = { equative?: boolean, ba?: boolean, kidsSection?: boolean };
|
||||
type BlankoutOptions = { equative?: boolean, ba?: boolean, kidsSection?: boolean, verb?: boolean };
|
||||
|
||||
const kidsBlank: T.PsString = { p: "___", f: "___" };
|
||||
|
||||
|
@ -70,10 +70,10 @@ export function compileEP(EP: T.EPRendered, combineLengths?: boolean, blankOut?:
|
|||
}
|
||||
|
||||
export function compileVP(VP: T.VPRendered, form: T.FormVersion): { ps: T.SingleOrLengthOpts<T.PsString[]>, e?: string [] };
|
||||
export function compileVP(VP: T.VPRendered, form: T.FormVersion, combineLengths: true): { ps: T.PsString[], e?: string [] };
|
||||
export function compileVP(VP: T.VPRendered, form: T.FormVersion, combineLengths?: true): { ps: T.SingleOrLengthOpts<T.PsString[]>, e?: string [] } {
|
||||
export function compileVP(VP: T.VPRendered, form: T.FormVersion, combineLengths: true, blankOut?: "verb"): { ps: T.PsString[], e?: string [] };
|
||||
export function compileVP(VP: T.VPRendered, form: T.FormVersion, combineLengths?: true, blankOut?: "verb"): { ps: T.SingleOrLengthOpts<T.PsString[]>, e?: string [] } {
|
||||
const verb = getVerbFromBlocks(VP.blocks).block;
|
||||
const psResult = compileVPPs(VP.blocks, VP.kids, form, VP.king);
|
||||
const psResult = compileVPPs(VP.blocks, VP.kids, form, VP.king, blankOut);
|
||||
return {
|
||||
ps: combineLengths ? flattenLengths(psResult) : psResult,
|
||||
// TODO: English doesn't quite work for dynamic compounds in passive voice
|
||||
|
@ -81,7 +81,7 @@ export function compileVP(VP: T.VPRendered, form: T.FormVersion, combineLengths?
|
|||
};
|
||||
}
|
||||
|
||||
function compileVPPs(blocks: T.Block[][], kids: T.Kid[], form: T.FormVersion, king: "subject" | "object"): T.SingleOrLengthOpts<T.PsString[]> {
|
||||
function compileVPPs(blocks: T.Block[][], kids: T.Kid[], form: T.FormVersion, king: "subject" | "object", blankOut?: "verb"): T.SingleOrLengthOpts<T.PsString[]> {
|
||||
const lengthyBlock = getLengthyFromBlocks(blocks);
|
||||
const potentialLengthy = lengthyBlock?.type === "verb"
|
||||
? lengthyBlock.block.ps
|
||||
|
@ -102,7 +102,10 @@ function compileVPPs(blocks: T.Block[][], kids: T.Kid[], form: T.FormVersion, ki
|
|||
kids,
|
||||
false,
|
||||
);
|
||||
return removeDuplicates(combineIntoText(blocksWKids, subjectPerson, {}));
|
||||
return removeDuplicates(combineIntoText(blocksWKids, subjectPerson, {
|
||||
ba: blankOut === "verb",
|
||||
verb: blankOut === "verb",
|
||||
}));
|
||||
}
|
||||
|
||||
function compileEPPs(blocks: T.Block[][], kids: T.Kid[], omitSubject: boolean, blankOut?: BlankoutOptions): T.SingleOrLengthOpts<T.PsString[]> {
|
||||
|
|
|
@ -970,6 +970,13 @@ export type Block = {
|
|||
| EquativeBlock;
|
||||
}
|
||||
|
||||
export type RenderedVerbB = VerbRenderedBlock
|
||||
| PerfectiveHeadBlock
|
||||
| ModalVerbBlock
|
||||
| ModalVerbKedulPart
|
||||
| PerfectEquativeBlock
|
||||
| PerfectParticipleBlock;
|
||||
|
||||
export type Kid = {
|
||||
key: number,
|
||||
kid: | { type: "ba" }
|
||||
|
|
Loading…
Reference in New Issue