neg perfective split problem
This commit is contained in:
parent
23c9c95692
commit
102232f559
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@lingdocs/pashto-inflector",
|
||||
"version": "3.1.5",
|
||||
"version": "3.1.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",
|
||||
|
|
|
@ -25,6 +25,15 @@ export function getSubjectSelection(blocks: T.EPSBlock[] | T.EPSBlockComplete[]
|
|||
return b.block;
|
||||
}
|
||||
|
||||
export function findPerfectiveHead(blocks: T.Block[][]): T.PerfectiveHeadBlock | undefined {
|
||||
|
||||
const b = blocks[0].find(f => f.block.type === "perfectiveHead");
|
||||
if (!b || b.block.type !== "perfectiveHead") {
|
||||
return undefined;
|
||||
}
|
||||
return b.block;
|
||||
}
|
||||
|
||||
export function getSubjectSelectionFromBlocks(blocks: T.Block[][]): T.Rendered<T.SubjectSelectionComplete> {
|
||||
const b = blocks[0].find(f => f.block.type === "subjectSelection");
|
||||
if (!b || b.block.type !== "subjectSelection") {
|
||||
|
|
|
@ -26,7 +26,7 @@ import {
|
|||
import { renderEnglishVPBase } from "./english-vp-rendering";
|
||||
import { personGender } from "../../lib/misc-helpers";
|
||||
import { renderNPSelection } from "./render-np";
|
||||
import { getObjectSelection, getSubjectSelection, makeBlock, makeKid } from "./blocks-utils";
|
||||
import { findPerfectiveHead, getObjectSelection, getSubjectSelection, makeBlock, makeKid } from "./blocks-utils";
|
||||
import { renderAPSelection } from "./render-ap";
|
||||
import { findPossesivesToShrink, orderKids, getMiniPronounPs } from "./render-common";
|
||||
|
||||
|
@ -237,7 +237,8 @@ function insertNegative(blocks: T.Block[], negative: boolean, imperative: boolea
|
|||
}),
|
||||
...blocksA.slice(-1),
|
||||
];
|
||||
if (hasNonStandardPerfectiveSplit(blocks)) {
|
||||
const nonStandardPerfectiveSplit = hasNonStandardPerfectiveSplit(blocks);
|
||||
if (nonStandardPerfectiveSplit) {
|
||||
return [
|
||||
basic,
|
||||
[
|
||||
|
@ -247,8 +248,26 @@ function insertNegative(blocks: T.Block[], negative: boolean, imperative: boolea
|
|||
...blocksA.slice(-1), // last (verb)
|
||||
],
|
||||
];
|
||||
}
|
||||
};
|
||||
if (hasLeapFroggable(blocks)) {
|
||||
const perfectiveHead = findPerfectiveHead([blocks]);
|
||||
const perfectiveHeadReg = perfectiveHead && ["و", "وا"].includes(perfectiveHead.ps.p);
|
||||
if (perfectiveHead) {
|
||||
return [
|
||||
[
|
||||
...blocksA.slice(0, blocks.length - 2),
|
||||
makeBlock({ type: "negative", imperative }),
|
||||
...blocksA.slice(-1), // last
|
||||
...blocksA.slice(-2, -1), // second last
|
||||
],
|
||||
[
|
||||
...blocksA.slice(0, blocks.length - 2),
|
||||
makeBlock({ type: "negative", imperative }),
|
||||
...blocksA.slice(-2),
|
||||
],
|
||||
...!perfectiveHeadReg ? [basic] : [],
|
||||
];
|
||||
}
|
||||
return [
|
||||
[
|
||||
...blocksA.slice(0, blocks.length - 2),
|
||||
|
|
Loading…
Reference in New Issue