diff --git a/package.json b/package.json index 9c6cbbd..f6763c9 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@lingdocs/pashto-inflector", - "version": "3.8.2", + "version": "3.8.3", "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", diff --git a/src/components/vp-explorer/VPDisplay.tsx b/src/components/vp-explorer/VPDisplay.tsx index 35e4203..421795d 100644 --- a/src/components/vp-explorer/VPDisplay.tsx +++ b/src/components/vp-explorer/VPDisplay.tsx @@ -38,7 +38,7 @@ function VPDisplay({ VPS, opts, setForm, justify, onlyOne, length, mode: preferr ; } const rendered = renderVP(VP); - const result = compileVP(rendered, rendered.form); + const result = compileVP(rendered, rendered.form, true); return
{typeof setForm === "function" && !inlineFormChoice && , 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, e?: string [] } { +export function compileVP(VP: T.VPRendered, form: T.FormVersion, combineLengths: true, blankOut?: BlankoutOptions): { ps: T.PsString[], e?: string [] }; +export function compileVP(VP: T.VPRendered, form: T.FormVersion, combineLengths?: true, blankOut?: BlankoutOptions): { ps: T.SingleOrLengthOpts, e?: string [] } { const verb = getVerbFromBlocks(VP.blocks).block; const psResult = compileVPPs(VP.blocks, VP.kids, form, VP.king, blankOut); return { @@ -82,7 +82,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", blankOut?: "verb"): T.SingleOrLengthOpts { +function compileVPPs(blocks: T.Block[][], kids: T.Kid[], form: T.FormVersion, king: "subject" | "object", blankOut?: BlankoutOptions): T.SingleOrLengthOpts { const lengthyBlock = getLengthyFromBlocks(blocks); const potentialLengthy = lengthyBlock?.type === "verb" ? lengthyBlock.block.ps @@ -101,12 +101,9 @@ function compileVPPs(blocks: T.Block[][], kids: T.Kid[], form: T.FormVersion, ki const blocksWKids = putKidsInKidsSection( filterForVisibleBlocksVP(blocks, form, king), kids, - false, + !!blankOut?.ba ); - return removeDuplicates(combineIntoText(blocksWKids, subjectPerson, { - ba: blankOut === "verb", - verb: blankOut === "verb", - })); + return removeDuplicates(combineIntoText(blocksWKids, subjectPerson, blankOut)); } function compileEPPs(blocks: T.Block[][], kids: T.Kid[], omitSubject: boolean, blankOut?: BlankoutOptions): T.SingleOrLengthOpts { @@ -161,6 +158,12 @@ export function filterForVisibleBlocksEP(blocks: T.Block[][], omitSubject: boole } function combineIntoText(piecesWVars: (T.Block | T.Kid | T.PsString)[][], subjectPerson: T.Person, blankOut?: BlankoutOptions): T.PsString[] { + function removeDoubleBlanks(x: T.PsString): T.PsString { + return { + p: x.p.replace(blank.p+blank.p, blank.p), + f: x.f.replace(blank.f+blank.f, blank.f), + }; + } function combine(pieces: (T.Block | T.Kid | T.PsString)[]): T.PsString[] { const first = pieces[0]; const next = pieces[1]; @@ -188,7 +191,7 @@ function combineIntoText(piecesWVars: (T.Block | T.Kid | T.PsString)[][], subjec r, )) ) - ); + ).map(removeDoubleBlanks); } return piecesWVars.flatMap(combine); }