@edgedev/template-engine 0.1.18 → 0.1.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,aAAa,EAAE,KAAK,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AAE7E,OAAO,KAAK,EAAwB,YAAY,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAEpF,OAAO,EAAE,aAAa,EAAE,CAAA;AACxB,YAAY,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AAC9D,YAAY,EACV,WAAW,EACX,gBAAgB,EAChB,SAAS,EACT,SAAS,EACT,YAAY,EACZ,cAAc,EACd,oBAAoB,EACpB,WAAW,EACX,UAAU,EACV,eAAe,GAChB,MAAM,YAAY,CAAA;AAEnB,OAAO,EACL,mBAAmB,EACnB,KAAK,aAAa,EAClB,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACpB,KAAK,aAAa,GACnB,MAAM,oBAAoB,CAAA;AAE3B,OAAO,EACL,cAAc,EACd,iBAAiB,GAClB,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AA2Q5C,eAAO,MAAM,qBAAqB,GAAI,KAAK,MAAM,KAAG,MAyBnD,CAAA;AAcD,eAAO,MAAM,cAAc,GACzB,SAAS,MAAM,EACf,SAAQ,cAAmB,EAC3B,OAAM,YAAiB,KACtB,MAyLF,CAAA;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAClB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,cAAc,GAAG,IAAI,CAAA;IAC9B,IAAI,CAAC,EAAE,YAAY,GAAG,IAAI,CAAA;CAC3B;AAED,MAAM,WAAW,qBAAqB;IACpC,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,qBAAqB,EAAE,CAAA;IAC/B,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;CACb;AAED,MAAM,MAAM,wBAAwB,GAAG,IAAI,CAAC,oBAAoB,EAAE,WAAW,GAAG,eAAe,CAAC,CAAA;AAEhG,MAAM,WAAW,mBAAmB;IAClC,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAClB,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAA;IACxB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAA;IAC5B,OAAO,CAAC,EAAE,mBAAmB,EAAE,GAAG,IAAI,CAAA;CACvC;AAED,MAAM,MAAM,aAAa,GAAG,gBAAgB,EAAE,CAAA;AAgK9C,eAAO,MAAM,UAAU,GACrB,QAAQ,eAAe,EAAE,EACzB,OAAO,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,SAAS,EACjD,YAAW,MAAM,GAAG,IAAI,GAAG,SAAc,EACzC,iBAAiB,wBAAwB,GAAG,IAAI,EAChD,YAAY,aAAa,GAAG,IAAI,KAC/B,OAAO,CAAC,gBAAgB,CAgD1B,CAAA;AAED,eAAO,MAAM,qBAAqB,GAChC,QAAQ,eAAe,EAAE,EACzB,OAAO,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,SAAS,EACjD,YAAW,MAAM,GAAG,IAAI,GAAG,SAAc,EACzC,YAAY,aAAa,GAAG,IAAI,KAC/B,OAAO,CAAC,gBAAgB,CAuC1B,CAAA;AAED,eAAe,cAAc,CAAA"}
package/dist/index.js CHANGED
@@ -14,7 +14,9 @@ export { unoCssFromHtml } from './unoSsr.js';
14
14
  const PLACEHOLDER_RE = /(?<!\{)\{\{\s*({[\s\S]*?})\s*\}\}(?!\})/g;
15
15
  const SUBARRAY_BLOCK_RE = /\{\{\{\s*#subarray(?::([A-Za-z_][A-Za-z0-9_-]*))?\s*(?:({[\s\S]*?}))?\s*\}\}\}([\s\S]*?)\{\{\{\s*\/subarray\s*\}\}\}/g;
16
16
  const SIMPLE_BLOCK_RE = /\{\{\{\s*#(text|image|textarea|richtext)\s*({[\s\S]*?})\s*\}\}\}/g;
17
- const IF_BLOCK_RE = /\{\{\{\s*#if\s*({[\s\S]*?})\s*\}\}\}([\s\S]*?)(?:\{\{\{\s*#else\s*\}\}\}([\s\S]*?))?\{\{\{\s*\/if\s*\}\}\}/g;
17
+ const IF_OPEN_TAG_RE = /\{\{\{\s*#if\s*({[\s\S]*?})\s*\}\}\}/y;
18
+ const IF_ELSE_TAG_RE = /\{\{\{\s*#else\s*\}\}\}/y;
19
+ const IF_CLOSE_TAG_RE = /\{\{\{\s*\/if\s*\}\}\}/y;
18
20
  const getByPath = (obj, path) => {
19
21
  if (!path || typeof path !== 'string')
20
22
  return obj;
@@ -100,6 +102,127 @@ const isConditionScopeAllowed = (scope, alias) => {
100
102
  return true;
101
103
  return typeof alias === 'string' && alias.trim() !== '' && scope === alias;
102
104
  };
105
+ const matchAt = (pattern, source, index) => {
106
+ pattern.lastIndex = index;
107
+ return pattern.exec(source);
108
+ };
109
+ const findNextIfBlock = (template, fromIndex = 0) => {
110
+ let searchFrom = fromIndex;
111
+ while (searchFrom < template.length) {
112
+ const openStart = template.indexOf('{{{', searchFrom);
113
+ if (openStart === -1)
114
+ return null;
115
+ const openMatch = matchAt(IF_OPEN_TAG_RE, template, openStart);
116
+ if (!openMatch) {
117
+ searchFrom = openStart + 3;
118
+ continue;
119
+ }
120
+ const openEnd = IF_OPEN_TAG_RE.lastIndex;
121
+ const conditionJson = openMatch[1] ?? '{}';
122
+ let depth = 1;
123
+ let cursor = openEnd;
124
+ let elseStart = -1;
125
+ let elseEnd = -1;
126
+ let closeStart = -1;
127
+ let closeEnd = -1;
128
+ while (cursor < template.length) {
129
+ const tokenStart = template.indexOf('{{{', cursor);
130
+ if (tokenStart === -1)
131
+ break;
132
+ if (matchAt(IF_OPEN_TAG_RE, template, tokenStart)) {
133
+ depth += 1;
134
+ cursor = IF_OPEN_TAG_RE.lastIndex;
135
+ continue;
136
+ }
137
+ if (matchAt(IF_CLOSE_TAG_RE, template, tokenStart)) {
138
+ depth -= 1;
139
+ cursor = IF_CLOSE_TAG_RE.lastIndex;
140
+ if (depth === 0) {
141
+ closeStart = tokenStart;
142
+ closeEnd = cursor;
143
+ break;
144
+ }
145
+ continue;
146
+ }
147
+ if (matchAt(IF_ELSE_TAG_RE, template, tokenStart)) {
148
+ if (depth === 1 && elseStart === -1) {
149
+ elseStart = tokenStart;
150
+ elseEnd = IF_ELSE_TAG_RE.lastIndex;
151
+ }
152
+ cursor = IF_ELSE_TAG_RE.lastIndex;
153
+ continue;
154
+ }
155
+ cursor = tokenStart + 3;
156
+ }
157
+ if (closeStart === -1 || closeEnd === -1) {
158
+ searchFrom = openStart + 3;
159
+ continue;
160
+ }
161
+ const trueStart = openEnd;
162
+ const trueEnd = elseStart !== -1 ? elseStart : closeStart;
163
+ const falseTpl = elseStart !== -1 && elseEnd !== -1
164
+ ? template.slice(elseEnd, closeStart)
165
+ : '';
166
+ return {
167
+ start: openStart,
168
+ end: closeEnd,
169
+ conditionJson,
170
+ trueTpl: template.slice(trueStart, trueEnd),
171
+ falseTpl,
172
+ };
173
+ }
174
+ return null;
175
+ };
176
+ const normalizeConditionOperand = (input) => {
177
+ const num = Number(input);
178
+ if (Number.isFinite(num) && `${input}`.trim() !== '')
179
+ return num;
180
+ return String(input ?? '');
181
+ };
182
+ const hasConditionValue = (input) => {
183
+ if (input == null)
184
+ return false;
185
+ if (typeof input === 'string')
186
+ return input !== '';
187
+ if (typeof input === 'boolean')
188
+ return input;
189
+ if (typeof input === 'number')
190
+ return Number.isFinite(input);
191
+ if (Array.isArray(input))
192
+ return input.length > 0;
193
+ return true;
194
+ };
195
+ const evaluateCondition = (condition, scopedValues, alias) => {
196
+ const cond = typeof condition === 'string' ? condition.trim() : '';
197
+ if (!cond)
198
+ return false;
199
+ const comparison = cond.match(/^([A-Za-z_][A-Za-z0-9_-]*)\.([a-zA-Z0-9_.$]+)\s*(>=|<=|==|!=|>|<)\s*(?:['"]([^'"]*)['"]|([^\s]+))$/);
200
+ const presence = cond.match(/^([A-Za-z_][A-Za-z0-9_-]*)\.([a-zA-Z0-9_.$]+)$/);
201
+ if (comparison && isConditionScopeAllowed(comparison[1], alias)) {
202
+ const [, , path, op, quotedValue, unquotedValue] = comparison;
203
+ const left = normalizeConditionOperand(getByPath(scopedValues, path));
204
+ const right = normalizeConditionOperand(quotedValue ?? unquotedValue ?? '');
205
+ switch (op) {
206
+ case '==':
207
+ return left === right;
208
+ case '!=':
209
+ return left !== right;
210
+ case '>':
211
+ return left > right;
212
+ case '<':
213
+ return left < right;
214
+ case '>=':
215
+ return left >= right;
216
+ case '<=':
217
+ return left <= right;
218
+ }
219
+ }
220
+ if (presence && isConditionScopeAllowed(presence[1], alias)) {
221
+ const [, , path] = presence;
222
+ return hasConditionValue(getByPath(scopedValues, path));
223
+ }
224
+ return false;
225
+ };
103
226
  export const normalizeTelHrefValue = (raw) => {
104
227
  if (typeof raw !== 'string')
105
228
  return raw;
@@ -220,67 +343,15 @@ export const renderTemplate = (content, values = {}, meta = {}) => {
220
343
  expanded = expanded.replace(/\{\{\s*item\s*\}\}/g, () => {
221
344
  return data == null ? '' : escapeHtml(String(data));
222
345
  });
223
- expanded = expanded.replace(IF_BLOCK_RE, (_match, json, trueTpl, falseTpl) => {
224
- const cfg = parseConfig(json || '{}') ?? {};
225
- const cond = typeof cfg.cond === 'string' ? cfg.cond.trim() : '';
226
- const comparison = cond.match(/^([A-Za-z_][A-Za-z0-9_-]*)\.([a-zA-Z0-9_.$]+)\s*(==|!=|>|<|>=|<=)\s*(?:['"]([^'"]*)['"]|([^\s]+))$/);
227
- const presence = cond.match(/^([A-Za-z_][A-Za-z0-9_-]*)\.([a-zA-Z0-9_.$]+)$/);
228
- let result = false;
229
- if (comparison && isConditionScopeAllowed(comparison[1], alias)) {
230
- const [, , path, op, quotedValue, unquotedValue] = comparison;
231
- const valueRaw = quotedValue ?? unquotedValue ?? '';
232
- const leftValue = getByPath(scopedValues, path);
233
- const normalize = (input) => {
234
- const num = Number(input);
235
- if (Number.isFinite(num) && `${input}`.trim() !== '')
236
- return num;
237
- return String(input ?? '');
238
- };
239
- const left = normalize(leftValue);
240
- const right = normalize(valueRaw);
241
- switch (op) {
242
- case '==':
243
- result = left === right;
244
- break;
245
- case '!=':
246
- result = left !== right;
247
- break;
248
- case '>':
249
- result = left > right;
250
- break;
251
- case '<':
252
- result = left < right;
253
- break;
254
- case '>=':
255
- result = left >= right;
256
- break;
257
- case '<=':
258
- result = left <= right;
259
- break;
260
- }
261
- }
262
- else if (presence && isConditionScopeAllowed(presence[1], alias)) {
263
- const [, , path] = presence;
264
- const value = getByPath(scopedValues, path);
265
- const hasValue = (input) => {
266
- if (input == null)
267
- return false;
268
- if (typeof input === 'string')
269
- return input !== '';
270
- if (typeof input === 'boolean')
271
- return input;
272
- if (typeof input === 'number')
273
- return Number.isFinite(input);
274
- if (Array.isArray(input))
275
- return input.length > 0;
276
- return true;
277
- };
278
- result = hasValue(value);
279
- }
280
- return result
281
- ? renderSection(trueTpl, data, alias, schemaCtx)
282
- : renderSection(falseTpl ?? '', data, alias, schemaCtx);
283
- });
346
+ let ifBlock = findNextIfBlock(expanded);
347
+ while (ifBlock) {
348
+ const cfg = parseConfig(ifBlock.conditionJson || '{}') ?? {};
349
+ const result = evaluateCondition(cfg.cond, scopedValues, alias);
350
+ const branchTpl = result ? ifBlock.trueTpl : ifBlock.falseTpl;
351
+ const rendered = renderSection(branchTpl, data, alias, schemaCtx);
352
+ expanded = `${expanded.slice(0, ifBlock.start)}${rendered}${expanded.slice(ifBlock.end)}`;
353
+ ifBlock = findNextIfBlock(expanded, ifBlock.start + rendered.length);
354
+ }
284
355
  return expanded;
285
356
  };
286
357
  let output = content;
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@edgedev/template-engine",
3
- "version": "0.1.18",
3
+ "version": "0.1.19",
4
4
  "description": "Lightweight template renderer for Edge CMS content.",
5
5
  "type": "module",
6
6
  "publishConfig": {
package/src/index.ts CHANGED
@@ -45,7 +45,9 @@ type Primitive = string | number | boolean | null | undefined
45
45
  const PLACEHOLDER_RE = /(?<!\{)\{\{\s*({[\s\S]*?})\s*\}\}(?!\})/g
46
46
  const SUBARRAY_BLOCK_RE = /\{\{\{\s*#subarray(?::([A-Za-z_][A-Za-z0-9_-]*))?\s*(?:({[\s\S]*?}))?\s*\}\}\}([\s\S]*?)\{\{\{\s*\/subarray\s*\}\}\}/g
47
47
  const SIMPLE_BLOCK_RE = /\{\{\{\s*#(text|image|textarea|richtext)\s*({[\s\S]*?})\s*\}\}\}/g
48
- const IF_BLOCK_RE = /\{\{\{\s*#if\s*({[\s\S]*?})\s*\}\}\}([\s\S]*?)(?:\{\{\{\s*#else\s*\}\}\}([\s\S]*?))?\{\{\{\s*\/if\s*\}\}\}/g
48
+ const IF_OPEN_TAG_RE = /\{\{\{\s*#if\s*({[\s\S]*?})\s*\}\}\}/y
49
+ const IF_ELSE_TAG_RE = /\{\{\{\s*#else\s*\}\}\}/y
50
+ const IF_CLOSE_TAG_RE = /\{\{\{\s*\/if\s*\}\}\}/y
49
51
 
50
52
  const getByPath = (obj: unknown, path: string): unknown => {
51
53
  if (!path || typeof path !== 'string')
@@ -148,6 +150,161 @@ const isConditionScopeAllowed = (scope: string, alias?: string): boolean => {
148
150
  return typeof alias === 'string' && alias.trim() !== '' && scope === alias
149
151
  }
150
152
 
153
+ interface IfBlockMatch {
154
+ start: number
155
+ end: number
156
+ conditionJson: string
157
+ trueTpl: string
158
+ falseTpl: string
159
+ }
160
+
161
+ const matchAt = (pattern: RegExp, source: string, index: number): RegExpExecArray | null => {
162
+ pattern.lastIndex = index
163
+ return pattern.exec(source)
164
+ }
165
+
166
+ const findNextIfBlock = (template: string, fromIndex = 0): IfBlockMatch | null => {
167
+ let searchFrom = fromIndex
168
+
169
+ while (searchFrom < template.length) {
170
+ const openStart = template.indexOf('{{{', searchFrom)
171
+ if (openStart === -1)
172
+ return null
173
+
174
+ const openMatch = matchAt(IF_OPEN_TAG_RE, template, openStart)
175
+ if (!openMatch) {
176
+ searchFrom = openStart + 3
177
+ continue
178
+ }
179
+
180
+ const openEnd = IF_OPEN_TAG_RE.lastIndex
181
+ const conditionJson = openMatch[1] ?? '{}'
182
+ let depth = 1
183
+ let cursor = openEnd
184
+ let elseStart = -1
185
+ let elseEnd = -1
186
+ let closeStart = -1
187
+ let closeEnd = -1
188
+
189
+ while (cursor < template.length) {
190
+ const tokenStart = template.indexOf('{{{', cursor)
191
+ if (tokenStart === -1)
192
+ break
193
+
194
+ if (matchAt(IF_OPEN_TAG_RE, template, tokenStart)) {
195
+ depth += 1
196
+ cursor = IF_OPEN_TAG_RE.lastIndex
197
+ continue
198
+ }
199
+
200
+ if (matchAt(IF_CLOSE_TAG_RE, template, tokenStart)) {
201
+ depth -= 1
202
+ cursor = IF_CLOSE_TAG_RE.lastIndex
203
+ if (depth === 0) {
204
+ closeStart = tokenStart
205
+ closeEnd = cursor
206
+ break
207
+ }
208
+ continue
209
+ }
210
+
211
+ if (matchAt(IF_ELSE_TAG_RE, template, tokenStart)) {
212
+ if (depth === 1 && elseStart === -1) {
213
+ elseStart = tokenStart
214
+ elseEnd = IF_ELSE_TAG_RE.lastIndex
215
+ }
216
+ cursor = IF_ELSE_TAG_RE.lastIndex
217
+ continue
218
+ }
219
+
220
+ cursor = tokenStart + 3
221
+ }
222
+
223
+ if (closeStart === -1 || closeEnd === -1) {
224
+ searchFrom = openStart + 3
225
+ continue
226
+ }
227
+
228
+ const trueStart = openEnd
229
+ const trueEnd = elseStart !== -1 ? elseStart : closeStart
230
+ const falseTpl = elseStart !== -1 && elseEnd !== -1
231
+ ? template.slice(elseEnd, closeStart)
232
+ : ''
233
+
234
+ return {
235
+ start: openStart,
236
+ end: closeEnd,
237
+ conditionJson,
238
+ trueTpl: template.slice(trueStart, trueEnd),
239
+ falseTpl,
240
+ }
241
+ }
242
+
243
+ return null
244
+ }
245
+
246
+ const normalizeConditionOperand = (input: unknown): string | number => {
247
+ const num = Number(input)
248
+ if (Number.isFinite(num) && `${input}`.trim() !== '')
249
+ return num
250
+ return String(input ?? '')
251
+ }
252
+
253
+ const hasConditionValue = (input: unknown): boolean => {
254
+ if (input == null)
255
+ return false
256
+ if (typeof input === 'string')
257
+ return input !== ''
258
+ if (typeof input === 'boolean')
259
+ return input
260
+ if (typeof input === 'number')
261
+ return Number.isFinite(input)
262
+ if (Array.isArray(input))
263
+ return input.length > 0
264
+ return true
265
+ }
266
+
267
+ const evaluateCondition = (
268
+ condition: unknown,
269
+ scopedValues: Record<string, unknown>,
270
+ alias?: string,
271
+ ): boolean => {
272
+ const cond = typeof condition === 'string' ? condition.trim() : ''
273
+ if (!cond)
274
+ return false
275
+
276
+ const comparison = cond.match(/^([A-Za-z_][A-Za-z0-9_-]*)\.([a-zA-Z0-9_.$]+)\s*(>=|<=|==|!=|>|<)\s*(?:['"]([^'"]*)['"]|([^\s]+))$/)
277
+ const presence = cond.match(/^([A-Za-z_][A-Za-z0-9_-]*)\.([a-zA-Z0-9_.$]+)$/)
278
+
279
+ if (comparison && isConditionScopeAllowed(comparison[1], alias)) {
280
+ const [, , path, op, quotedValue, unquotedValue] = comparison
281
+ const left = normalizeConditionOperand(getByPath(scopedValues, path))
282
+ const right = normalizeConditionOperand(quotedValue ?? unquotedValue ?? '')
283
+
284
+ switch (op) {
285
+ case '==':
286
+ return left === right
287
+ case '!=':
288
+ return left !== right
289
+ case '>':
290
+ return left > right
291
+ case '<':
292
+ return left < right
293
+ case '>=':
294
+ return left >= right
295
+ case '<=':
296
+ return left <= right
297
+ }
298
+ }
299
+
300
+ if (presence && isConditionScopeAllowed(presence[1], alias)) {
301
+ const [, , path] = presence
302
+ return hasConditionValue(getByPath(scopedValues, path))
303
+ }
304
+
305
+ return false
306
+ }
307
+
151
308
  export const normalizeTelHrefValue = (raw: string): string => {
152
309
  if (typeof raw !== 'string')
153
310
  return raw
@@ -304,70 +461,15 @@ export const renderTemplate = (
304
461
  return data == null ? '' : escapeHtml(String(data))
305
462
  })
306
463
 
307
- expanded = expanded.replace(IF_BLOCK_RE, (_match, json, trueTpl, falseTpl) => {
308
- const cfg = parseConfig(json || '{}') ?? {}
309
- const cond = typeof cfg.cond === 'string' ? cfg.cond.trim() : ''
310
- const comparison = cond.match(/^([A-Za-z_][A-Za-z0-9_-]*)\.([a-zA-Z0-9_.$]+)\s*(==|!=|>|<|>=|<=)\s*(?:['"]([^'"]*)['"]|([^\s]+))$/)
311
- const presence = cond.match(/^([A-Za-z_][A-Za-z0-9_-]*)\.([a-zA-Z0-9_.$]+)$/)
312
- let result = false
313
-
314
- if (comparison && isConditionScopeAllowed(comparison[1], alias)) {
315
- const [, , path, op, quotedValue, unquotedValue] = comparison
316
- const valueRaw = quotedValue ?? unquotedValue ?? ''
317
- const leftValue = getByPath(scopedValues, path)
318
- const normalize = (input: unknown): string | number => {
319
- const num = Number(input)
320
- if (Number.isFinite(num) && `${input}`.trim() !== '')
321
- return num
322
- return String(input ?? '')
323
- }
324
-
325
- const left = normalize(leftValue)
326
- const right = normalize(valueRaw)
327
-
328
- switch (op) {
329
- case '==':
330
- result = left === right
331
- break
332
- case '!=':
333
- result = left !== right
334
- break
335
- case '>':
336
- result = left > right
337
- break
338
- case '<':
339
- result = left < right
340
- break
341
- case '>=':
342
- result = left >= right
343
- break
344
- case '<=':
345
- result = left <= right
346
- break
347
- }
348
- } else if (presence && isConditionScopeAllowed(presence[1], alias)) {
349
- const [, , path] = presence
350
- const value = getByPath(scopedValues, path)
351
- const hasValue = (input: unknown): boolean => {
352
- if (input == null)
353
- return false
354
- if (typeof input === 'string')
355
- return input !== ''
356
- if (typeof input === 'boolean')
357
- return input
358
- if (typeof input === 'number')
359
- return Number.isFinite(input)
360
- if (Array.isArray(input))
361
- return input.length > 0
362
- return true
363
- }
364
- result = hasValue(value)
365
- }
366
-
367
- return result
368
- ? renderSection(trueTpl, data, alias, schemaCtx)
369
- : renderSection(falseTpl ?? '', data, alias, schemaCtx)
370
- })
464
+ let ifBlock = findNextIfBlock(expanded)
465
+ while (ifBlock) {
466
+ const cfg = parseConfig(ifBlock.conditionJson || '{}') ?? {}
467
+ const result = evaluateCondition(cfg.cond, scopedValues, alias)
468
+ const branchTpl = result ? ifBlock.trueTpl : ifBlock.falseTpl
469
+ const rendered = renderSection(branchTpl, data, alias, schemaCtx)
470
+ expanded = `${expanded.slice(0, ifBlock.start)}${rendered}${expanded.slice(ifBlock.end)}`
471
+ ifBlock = findNextIfBlock(expanded, ifBlock.start + rendered.length)
472
+ }
371
473
 
372
474
  return expanded
373
475
  }
@@ -59,3 +59,57 @@ test('if supports subarray tag alias in nested condition checks', () => {
59
59
  assert.match(html, /href="https:\/\/example\.com\/docs">Docs<\/a>/)
60
60
  assert.match(html, /href="\/about">about<\/a>/)
61
61
  })
62
+
63
+ test('if supports nested if blocks inside else branches in array scope', () => {
64
+ const content = `
65
+ {{{#array {"field":"items","as":"entry"} }}}
66
+ {{{#if {"cond":"entry.type == 'external'"} }}}E
67
+ {{{#else}}}
68
+ {{{#if {"cond":"entry.name == 'home'"} }}}H{{{#else}}}N{{{/if}}}
69
+ {{{/if}}}
70
+ {{{/array}}}
71
+ `
72
+
73
+ const html = renderTemplate(content, {
74
+ items: [
75
+ { type: 'internal', name: 'home' },
76
+ { type: 'internal', name: 'about' },
77
+ { type: 'external', name: 'home' },
78
+ ],
79
+ })
80
+
81
+ assert.match(html, /H/)
82
+ assert.match(html, /N/)
83
+ assert.match(html, /E/)
84
+ })
85
+
86
+ test('if handles nested menu checks for home slug in subarray alias scope', () => {
87
+ const content = `
88
+ {{{#array {"field":"menuGroups","as":"group"} }}}
89
+ {{{#subarray:menuItem {"field":"item.menus.Site Root","limit":5,"value":[]} }}}
90
+ {{{#if {"cond":"menuItem.item.type == 'external'"} }}}E
91
+ {{{#else}}}
92
+ {{{#if {"cond":"menuItem.name == 'home'"} }}}H{{{#else}}}N{{{/if}}}
93
+ {{{/if}}}
94
+ {{{/subarray}}}
95
+ {{{/array}}}
96
+ `
97
+
98
+ const html = renderTemplate(content, {
99
+ menuGroups: [
100
+ {
101
+ menus: {
102
+ 'Site Root': [
103
+ { name: 'home', item: { type: 'internal' } },
104
+ { name: 'about', item: { type: 'internal' } },
105
+ { name: 'docs', item: { type: 'external', url: 'https://example.com/docs' } },
106
+ ],
107
+ },
108
+ },
109
+ ],
110
+ })
111
+
112
+ assert.match(html, /H/)
113
+ assert.match(html, /N/)
114
+ assert.match(html, /E/)
115
+ })