From 8d3d91da2fb6df1529d55c580872dd2387ca6f36 Mon Sep 17 00:00:00 2001 From: David Bruant Date: Fri, 12 Sep 2025 17:22:19 +0200 Subject: [PATCH] Error thrown by mistake for {#each} inside an {#if} (#19) * reduced test case * test case * adding complex test case --- .../odf/templating/fillOdtElementTemplate.js | 8 +++--- tests/fill-odt-template/complex.js | 25 ++++++++++++++++++ tests/fixtures/if-then-each.odt | Bin 0 -> 16077 bytes tools/create-odt-file-from-template.js | 4 +++ 4 files changed, 33 insertions(+), 4 deletions(-) create mode 100644 tests/fill-odt-template/complex.js create mode 100644 tests/fixtures/if-then-each.odt diff --git a/scripts/odf/templating/fillOdtElementTemplate.js b/scripts/odf/templating/fillOdtElementTemplate.js index 51203ba..6e25366 100644 --- a/scripts/odf/templating/fillOdtElementTemplate.js +++ b/scripts/odf/templating/fillOdtElementTemplate.js @@ -601,6 +601,7 @@ export default function fillOdtElementTemplate(rootElements, compartment) { // @ts-ignore traverse(rootElement, currentNode => { //console.log('currentlyOpenBlocks', currentlyOpenBlocks) + //console.log('eachOpeningMarkerNode', eachOpeningMarkerNode) const insideAnOpenBlock = currentlyOpenBlocks.length >= 1 @@ -637,11 +638,10 @@ export default function fillOdtElementTemplate(rootElements, compartment) { if(isEachClosingBlock) { - //console.log('isEachClosingBlock', isEachClosingBlock) + //console.log('isEachClosingBlock', isEachClosingBlock, currentlyOpenBlocks) - if(!eachOpeningMarkerNode){ - throw new Error(`{/each} found without corresponding opening {#each x as y}`) - } + if(!insideAnOpenBlock) + throw new Error('{/each} found without corresponding opening {#each x as y}') if(currentlyOpenBlocks.at(-1) !== EACH) throw new Error(`{/each} found while the last opened block was not an opening {#each x as y}`) diff --git a/tests/fill-odt-template/complex.js b/tests/fill-odt-template/complex.js new file mode 100644 index 0000000..970cd7b --- /dev/null +++ b/tests/fill-odt-template/complex.js @@ -0,0 +1,25 @@ +import test from 'ava'; +import {join} from 'node:path'; + +import {getOdtTemplate} from '../../scripts/odf/odtTemplate-forNode.js' + +import {fillOdtTemplate, getOdtTextContent} from '../../exports.js' + + +test('template with {#each} inside an {#if}', async t => { + const templatePath = join(import.meta.dirname, '../fixtures/if-then-each.odt') + const templateContent = `{#if liste_départements.length >= 2}{#each liste_départements as département}{département}, {/each} {/if}` + + const data = {liste_départements : ['95', '33']} + + const odtTemplate = await getOdtTemplate(templatePath) + const templateTextContent = await getOdtTextContent(odtTemplate) + t.deepEqual(templateTextContent.trim(), templateContent.trim(), 'reconnaissance du template') + + const odtResult = await fillOdtTemplate(odtTemplate, data) + + const odtResultTextContent = await getOdtTextContent(odtResult) + t.deepEqual(odtResultTextContent.trim(), `95, 33,`) + +}); + diff --git a/tests/fixtures/if-then-each.odt b/tests/fixtures/if-then-each.odt new file mode 100644 index 0000000000000000000000000000000000000000..1b6f1ae1cd7ebb4dad9e5960222eecdc0a8fdf49 GIT binary patch literal 16077 zcmeHuWprJ+vgR?x%*;%&V~8CyJEoXph?$w0nVFfHnVFfHA!cUgaqhkS`u2U@{bpv( z xmm(Jd*Pf}?wl~k&d5(NQ80RSKX00whvWwpM~FysIL;Mev32w-Yxs%ztDp{r?O zVPdGQX=7+^Mr&uLLu0OKZD>tnZlP-S_b{|4lp)5D@?Pj@~=h91hzau(WpvlkS2* zBCv}rDLO5iyM-u@?L({JG%^|2g7>2zAgV4ZAWPKcYHGUExd(Bn19}3PtB`CvWOC2) zE_(#qixwkeP}FH{%FoyHOr_M*(fg{y@tH_n{biRvtOPtkkMLU=_-P_Tg~nz!ff(An z_ZfFfH7$6%!bC+X`wvxYxfQ!FN8irr@~+#2pbsis@73;Rh^wih@8Vr@O!Bu z{HujeY*v?!*kG*_;y`eH2U{I8L=0IcC>83Xw%PcBi8VLtwKly6XtB$Aeh6SmXLR7d z3%jd2(|I>;Q|wUlV)ytPdT!W=bfku2pHuGxIQ|bhSP{ekgW6&x=+El~PPTEPz|`|& zR4z>NW3g$IEzJQNPHKzf9sKJw+S7z!Q9>2Q>Y!-KB$$%~xL~Wr;lPb%O+(7(DKIh( ze1>Xpecf4CQXJGUNk3_MmmH-iEL>$Fypk7`e`pRJk7)r=T(lFs%VHr*RG9gcDM0HL zzC&9@iy)3`EIGDRLK_Bt$tXi6K;NjldzBBu*TDD;iDO`a+t|ir0dQXBAdq zp8|rv1azH!eDVV({Ia^&E!wOcTs@z#qYPR!6cEt8U-(G#gOv0Zm<&VGB(=&mLDyT; zf4B538sW*>V0FdN>5)|-^LYLv!P62D5T+LDF4wIAJb+nnrUlyS6t3rN;*OaBO5d>H zpyea0#$CIpG=_pb!C;9!L6BZYJ2PD9hq~c?4qes|`_2nhD8d6d?*v&JVVE}9%03xu z&D9K0OxBzZ+n*94xg6p)4Wr#c7}q=_9ho1rK+8b1D1$uF%0D>>Hq8{y*EO6_-+YT# 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 literal 0 HcmV?d00001 diff --git a/tools/create-odt-file-from-template.js b/tools/create-odt-file-from-template.js index 1c1a8f3..6af5ea8 100644 --- a/tools/create-odt-file-from-template.js +++ b/tools/create-odt-file-from-template.js @@ -103,6 +103,7 @@ const templatePath = join(import.meta.dirname, '../tests/fixtures/partially-form const data = {nombre : 37} */ +/* const templatePath = join(import.meta.dirname, '../tests/fixtures/text-after-closing-each.odt') const data = { saison: 'Printemps', @@ -112,7 +113,10 @@ const data = { 'Blette' ] } +*/ +const templatePath = join(import.meta.dirname, '../tests/fixtures/if-then-each.odt') +const data = {liste_départements : ['95', '33']} const odtTemplate = await getOdtTemplate(templatePath)