@edgedev/template-engine 0.1.18 → 0.1.20

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":"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"}
package/dist/index.js CHANGED
@@ -13,8 +13,11 @@ export { normalizeTheme, buildCssVarsBlock, } from './unoSsr.js';
13
13
  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
+ const ENTRIES_BLOCK_RE = /\{\{\{\s*#entries(?::([A-Za-z_][A-Za-z0-9_-]*))?\s*(?:({(?:[^{}]|{[^{}]*})*}))?\s*\}\}\}([\s\S]*?)\{\{\{\s*\/entries\s*\}\}\}/g;
16
17
  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;
18
+ const IF_OPEN_TAG_RE = /\{\{\{\s*#if\s*({[\s\S]*?})\s*\}\}\}/y;
19
+ const IF_ELSE_TAG_RE = /\{\{\{\s*#else\s*\}\}\}/y;
20
+ const IF_CLOSE_TAG_RE = /\{\{\{\s*\/if\s*\}\}\}/y;
18
21
  const getByPath = (obj, path) => {
19
22
  if (!path || typeof path !== 'string')
20
23
  return obj;
@@ -91,6 +94,9 @@ const getCommonList = (source) => {
91
94
  const hasOwn = (obj, key) => {
92
95
  return Object.prototype.hasOwnProperty.call(obj, key);
93
96
  };
97
+ const isObjectRecord = (value) => {
98
+ return value != null && typeof value === 'object' && !Array.isArray(value);
99
+ };
94
100
  const aliasRegex = (alias) => {
95
101
  const esc = alias.replace(/[-/\\^$*+?.()|[\]{}]/g, '\\$&');
96
102
  return new RegExp(`\\{\\{\\s*${esc}\\.([a-zA-Z0-9_.$]+)\\s*\\}\\}`, 'g');
@@ -100,6 +106,127 @@ const isConditionScopeAllowed = (scope, alias) => {
100
106
  return true;
101
107
  return typeof alias === 'string' && alias.trim() !== '' && scope === alias;
102
108
  };
109
+ const matchAt = (pattern, source, index) => {
110
+ pattern.lastIndex = index;
111
+ return pattern.exec(source);
112
+ };
113
+ const findNextIfBlock = (template, fromIndex = 0) => {
114
+ let searchFrom = fromIndex;
115
+ while (searchFrom < template.length) {
116
+ const openStart = template.indexOf('{{{', searchFrom);
117
+ if (openStart === -1)
118
+ return null;
119
+ const openMatch = matchAt(IF_OPEN_TAG_RE, template, openStart);
120
+ if (!openMatch) {
121
+ searchFrom = openStart + 3;
122
+ continue;
123
+ }
124
+ const openEnd = IF_OPEN_TAG_RE.lastIndex;
125
+ const conditionJson = openMatch[1] ?? '{}';
126
+ let depth = 1;
127
+ let cursor = openEnd;
128
+ let elseStart = -1;
129
+ let elseEnd = -1;
130
+ let closeStart = -1;
131
+ let closeEnd = -1;
132
+ while (cursor < template.length) {
133
+ const tokenStart = template.indexOf('{{{', cursor);
134
+ if (tokenStart === -1)
135
+ break;
136
+ if (matchAt(IF_OPEN_TAG_RE, template, tokenStart)) {
137
+ depth += 1;
138
+ cursor = IF_OPEN_TAG_RE.lastIndex;
139
+ continue;
140
+ }
141
+ if (matchAt(IF_CLOSE_TAG_RE, template, tokenStart)) {
142
+ depth -= 1;
143
+ cursor = IF_CLOSE_TAG_RE.lastIndex;
144
+ if (depth === 0) {
145
+ closeStart = tokenStart;
146
+ closeEnd = cursor;
147
+ break;
148
+ }
149
+ continue;
150
+ }
151
+ if (matchAt(IF_ELSE_TAG_RE, template, tokenStart)) {
152
+ if (depth === 1 && elseStart === -1) {
153
+ elseStart = tokenStart;
154
+ elseEnd = IF_ELSE_TAG_RE.lastIndex;
155
+ }
156
+ cursor = IF_ELSE_TAG_RE.lastIndex;
157
+ continue;
158
+ }
159
+ cursor = tokenStart + 3;
160
+ }
161
+ if (closeStart === -1 || closeEnd === -1) {
162
+ searchFrom = openStart + 3;
163
+ continue;
164
+ }
165
+ const trueStart = openEnd;
166
+ const trueEnd = elseStart !== -1 ? elseStart : closeStart;
167
+ const falseTpl = elseStart !== -1 && elseEnd !== -1
168
+ ? template.slice(elseEnd, closeStart)
169
+ : '';
170
+ return {
171
+ start: openStart,
172
+ end: closeEnd,
173
+ conditionJson,
174
+ trueTpl: template.slice(trueStart, trueEnd),
175
+ falseTpl,
176
+ };
177
+ }
178
+ return null;
179
+ };
180
+ const normalizeConditionOperand = (input) => {
181
+ const num = Number(input);
182
+ if (Number.isFinite(num) && `${input}`.trim() !== '')
183
+ return num;
184
+ return String(input ?? '');
185
+ };
186
+ const hasConditionValue = (input) => {
187
+ if (input == null)
188
+ return false;
189
+ if (typeof input === 'string')
190
+ return input !== '';
191
+ if (typeof input === 'boolean')
192
+ return input;
193
+ if (typeof input === 'number')
194
+ return Number.isFinite(input);
195
+ if (Array.isArray(input))
196
+ return input.length > 0;
197
+ return true;
198
+ };
199
+ const evaluateCondition = (condition, scopedValues, alias) => {
200
+ const cond = typeof condition === 'string' ? condition.trim() : '';
201
+ if (!cond)
202
+ return false;
203
+ const comparison = cond.match(/^([A-Za-z_][A-Za-z0-9_-]*)\.([a-zA-Z0-9_.$]+)\s*(>=|<=|==|!=|>|<)\s*(?:['"]([^'"]*)['"]|([^\s]+))$/);
204
+ const presence = cond.match(/^([A-Za-z_][A-Za-z0-9_-]*)\.([a-zA-Z0-9_.$]+)$/);
205
+ if (comparison && isConditionScopeAllowed(comparison[1], alias)) {
206
+ const [, , path, op, quotedValue, unquotedValue] = comparison;
207
+ const left = normalizeConditionOperand(getByPath(scopedValues, path));
208
+ const right = normalizeConditionOperand(quotedValue ?? unquotedValue ?? '');
209
+ switch (op) {
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
+ case '>=':
219
+ return left >= right;
220
+ case '<=':
221
+ return left <= right;
222
+ }
223
+ }
224
+ if (presence && isConditionScopeAllowed(presence[1], alias)) {
225
+ const [, , path] = presence;
226
+ return hasConditionValue(getByPath(scopedValues, path));
227
+ }
228
+ return false;
229
+ };
103
230
  export const normalizeTelHrefValue = (raw) => {
104
231
  if (typeof raw !== 'string')
105
232
  return raw;
@@ -138,7 +265,21 @@ export const renderTemplate = (content, values = {}, meta = {}) => {
138
265
  const scopedValues = typeof data === 'object' && data !== null
139
266
  ? data
140
267
  : {};
141
- let expanded = template.replace(SUBARRAY_BLOCK_RE, (_match, tagAlias, json, innerTpl) => {
268
+ const stashedEntries = [];
269
+ const stashToken = (index) => `__EDGE_ENTRIES_BLOCK_${index}__`;
270
+ const restoreEntries = (input) => {
271
+ return input.replace(/__EDGE_ENTRIES_BLOCK_(\d+)__/g, (_match, rawIndex) => {
272
+ const index = Number(rawIndex);
273
+ return Number.isInteger(index) && index >= 0 && index < stashedEntries.length
274
+ ? stashedEntries[index]
275
+ : '';
276
+ });
277
+ };
278
+ let expanded = template.replace(ENTRIES_BLOCK_RE, (full) => {
279
+ const index = stashedEntries.push(full) - 1;
280
+ return stashToken(index);
281
+ });
282
+ expanded = expanded.replace(SUBARRAY_BLOCK_RE, (_match, tagAlias, json, innerTpl) => {
142
283
  const cfg = parseConfig(json || '{}') ?? {};
143
284
  const fieldRaw = typeof cfg.field === 'string' ? cfg.field.trim() : '';
144
285
  let list;
@@ -166,7 +307,8 @@ export const renderTemplate = (content, values = {}, meta = {}) => {
166
307
  ? cfg.as.trim()
167
308
  : (tagAlias?.trim() || undefined);
168
309
  const childSchema = typeof cfg.schema === 'object' ? cfg.schema : schemaCtx;
169
- return normalized.map(entry => renderSection(innerTpl, entry, childAlias, childSchema)).join('');
310
+ const nestedTemplate = restoreEntries(innerTpl);
311
+ return normalized.map(entry => renderSection(nestedTemplate, entry, childAlias, childSchema)).join('');
170
312
  });
171
313
  expanded = expanded.replace(ARRAY_BLOCK_RE, (_m, json, innerTpl) => {
172
314
  const cfg = parseConfig(json || '{}') ?? {};
@@ -194,7 +336,39 @@ export const renderTemplate = (content, values = {}, meta = {}) => {
194
336
  normalized = sliceWithLimit(normalized, cfg.limit);
195
337
  const childAlias = typeof cfg.as === 'string' && cfg.as.trim() ? cfg.as.trim() : undefined;
196
338
  const childSchema = typeof cfg.schema === 'object' ? cfg.schema : schemaCtx;
197
- return normalized.map(entry => renderSection(innerTpl, entry, childAlias, childSchema)).join('');
339
+ const nestedTemplate = restoreEntries(innerTpl);
340
+ return normalized.map(entry => renderSection(nestedTemplate, entry, childAlias, childSchema)).join('');
341
+ });
342
+ expanded = restoreEntries(expanded);
343
+ expanded = expanded.replace(ENTRIES_BLOCK_RE, (_match, tagAlias, json, innerTpl) => {
344
+ const cfg = parseConfig(json || '{}') ?? {};
345
+ const fieldRaw = typeof cfg.field === 'string' ? cfg.field.trim() : '';
346
+ let objectValue;
347
+ if (fieldRaw) {
348
+ if (fieldRaw.startsWith('item.')) {
349
+ objectValue = getByPath(scopedValues, fieldRaw.slice(5));
350
+ }
351
+ else {
352
+ objectValue = scopedValues[fieldRaw] ?? getByPath(scopedValues, fieldRaw);
353
+ if (!isObjectRecord(objectValue))
354
+ objectValue = getByPath(values, fieldRaw);
355
+ }
356
+ }
357
+ else if (isObjectRecord(cfg.value)) {
358
+ objectValue = cfg.value;
359
+ }
360
+ if (!isObjectRecord(objectValue))
361
+ return '';
362
+ const limit = Number(cfg.limit);
363
+ const owned = Object.entries(objectValue);
364
+ const normalized = Number.isFinite(limit) && limit > 0 ? owned.slice(0, limit) : owned;
365
+ const childAlias = typeof cfg.as === 'string' && cfg.as.trim()
366
+ ? cfg.as.trim()
367
+ : (tagAlias?.trim() || undefined);
368
+ const childSchema = typeof cfg.schema === 'object' ? cfg.schema : schemaCtx;
369
+ return normalized.map(([key, value]) => {
370
+ return renderSection(innerTpl, { key, value }, childAlias, childSchema);
371
+ }).join('');
198
372
  });
199
373
  if (alias && typeof alias === 'string') {
200
374
  expanded = expanded.replace(aliasRegex(alias), (_match, path) => {
@@ -220,67 +394,15 @@ export const renderTemplate = (content, values = {}, meta = {}) => {
220
394
  expanded = expanded.replace(/\{\{\s*item\s*\}\}/g, () => {
221
395
  return data == null ? '' : escapeHtml(String(data));
222
396
  });
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
- });
397
+ let ifBlock = findNextIfBlock(expanded);
398
+ while (ifBlock) {
399
+ const cfg = parseConfig(ifBlock.conditionJson || '{}') ?? {};
400
+ const result = evaluateCondition(cfg.cond, scopedValues, alias);
401
+ const branchTpl = result ? ifBlock.trueTpl : ifBlock.falseTpl;
402
+ const rendered = renderSection(branchTpl, data, alias, schemaCtx);
403
+ expanded = `${expanded.slice(0, ifBlock.start)}${rendered}${expanded.slice(ifBlock.end)}`;
404
+ ifBlock = findNextIfBlock(expanded, ifBlock.start + rendered.length);
405
+ }
284
406
  return expanded;
285
407
  };
286
408
  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.20",
4
4
  "description": "Lightweight template renderer for Edge CMS content.",
5
5
  "type": "module",
6
6
  "publishConfig": {
package/src/index.ts CHANGED
@@ -44,8 +44,11 @@ type Primitive = string | number | boolean | null | undefined
44
44
 
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
+ const ENTRIES_BLOCK_RE = /\{\{\{\s*#entries(?::([A-Za-z_][A-Za-z0-9_-]*))?\s*(?:({(?:[^{}]|{[^{}]*})*}))?\s*\}\}\}([\s\S]*?)\{\{\{\s*\/entries\s*\}\}\}/g
47
48
  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
49
+ const IF_OPEN_TAG_RE = /\{\{\{\s*#if\s*({[\s\S]*?})\s*\}\}\}/y
50
+ const IF_ELSE_TAG_RE = /\{\{\{\s*#else\s*\}\}\}/y
51
+ const IF_CLOSE_TAG_RE = /\{\{\{\s*\/if\s*\}\}\}/y
49
52
 
50
53
  const getByPath = (obj: unknown, path: string): unknown => {
51
54
  if (!path || typeof path !== 'string')
@@ -137,6 +140,10 @@ const hasOwn = (obj: Record<string, unknown>, key: string): boolean => {
137
140
  return Object.prototype.hasOwnProperty.call(obj, key)
138
141
  }
139
142
 
143
+ const isObjectRecord = (value: unknown): value is Record<string, unknown> => {
144
+ return value != null && typeof value === 'object' && !Array.isArray(value)
145
+ }
146
+
140
147
  const aliasRegex = (alias: string): RegExp => {
141
148
  const esc = alias.replace(/[-/\\^$*+?.()|[\]{}]/g, '\\$&')
142
149
  return new RegExp(`\\{\\{\\s*${esc}\\.([a-zA-Z0-9_.$]+)\\s*\\}\\}`, 'g')
@@ -148,6 +155,161 @@ const isConditionScopeAllowed = (scope: string, alias?: string): boolean => {
148
155
  return typeof alias === 'string' && alias.trim() !== '' && scope === alias
149
156
  }
150
157
 
158
+ interface IfBlockMatch {
159
+ start: number
160
+ end: number
161
+ conditionJson: string
162
+ trueTpl: string
163
+ falseTpl: string
164
+ }
165
+
166
+ const matchAt = (pattern: RegExp, source: string, index: number): RegExpExecArray | null => {
167
+ pattern.lastIndex = index
168
+ return pattern.exec(source)
169
+ }
170
+
171
+ const findNextIfBlock = (template: string, fromIndex = 0): IfBlockMatch | null => {
172
+ let searchFrom = fromIndex
173
+
174
+ while (searchFrom < template.length) {
175
+ const openStart = template.indexOf('{{{', searchFrom)
176
+ if (openStart === -1)
177
+ return null
178
+
179
+ const openMatch = matchAt(IF_OPEN_TAG_RE, template, openStart)
180
+ if (!openMatch) {
181
+ searchFrom = openStart + 3
182
+ continue
183
+ }
184
+
185
+ const openEnd = IF_OPEN_TAG_RE.lastIndex
186
+ const conditionJson = openMatch[1] ?? '{}'
187
+ let depth = 1
188
+ let cursor = openEnd
189
+ let elseStart = -1
190
+ let elseEnd = -1
191
+ let closeStart = -1
192
+ let closeEnd = -1
193
+
194
+ while (cursor < template.length) {
195
+ const tokenStart = template.indexOf('{{{', cursor)
196
+ if (tokenStart === -1)
197
+ break
198
+
199
+ if (matchAt(IF_OPEN_TAG_RE, template, tokenStart)) {
200
+ depth += 1
201
+ cursor = IF_OPEN_TAG_RE.lastIndex
202
+ continue
203
+ }
204
+
205
+ if (matchAt(IF_CLOSE_TAG_RE, template, tokenStart)) {
206
+ depth -= 1
207
+ cursor = IF_CLOSE_TAG_RE.lastIndex
208
+ if (depth === 0) {
209
+ closeStart = tokenStart
210
+ closeEnd = cursor
211
+ break
212
+ }
213
+ continue
214
+ }
215
+
216
+ if (matchAt(IF_ELSE_TAG_RE, template, tokenStart)) {
217
+ if (depth === 1 && elseStart === -1) {
218
+ elseStart = tokenStart
219
+ elseEnd = IF_ELSE_TAG_RE.lastIndex
220
+ }
221
+ cursor = IF_ELSE_TAG_RE.lastIndex
222
+ continue
223
+ }
224
+
225
+ cursor = tokenStart + 3
226
+ }
227
+
228
+ if (closeStart === -1 || closeEnd === -1) {
229
+ searchFrom = openStart + 3
230
+ continue
231
+ }
232
+
233
+ const trueStart = openEnd
234
+ const trueEnd = elseStart !== -1 ? elseStart : closeStart
235
+ const falseTpl = elseStart !== -1 && elseEnd !== -1
236
+ ? template.slice(elseEnd, closeStart)
237
+ : ''
238
+
239
+ return {
240
+ start: openStart,
241
+ end: closeEnd,
242
+ conditionJson,
243
+ trueTpl: template.slice(trueStart, trueEnd),
244
+ falseTpl,
245
+ }
246
+ }
247
+
248
+ return null
249
+ }
250
+
251
+ const normalizeConditionOperand = (input: unknown): string | number => {
252
+ const num = Number(input)
253
+ if (Number.isFinite(num) && `${input}`.trim() !== '')
254
+ return num
255
+ return String(input ?? '')
256
+ }
257
+
258
+ const hasConditionValue = (input: unknown): boolean => {
259
+ if (input == null)
260
+ return false
261
+ if (typeof input === 'string')
262
+ return input !== ''
263
+ if (typeof input === 'boolean')
264
+ return input
265
+ if (typeof input === 'number')
266
+ return Number.isFinite(input)
267
+ if (Array.isArray(input))
268
+ return input.length > 0
269
+ return true
270
+ }
271
+
272
+ const evaluateCondition = (
273
+ condition: unknown,
274
+ scopedValues: Record<string, unknown>,
275
+ alias?: string,
276
+ ): boolean => {
277
+ const cond = typeof condition === 'string' ? condition.trim() : ''
278
+ if (!cond)
279
+ return false
280
+
281
+ const comparison = cond.match(/^([A-Za-z_][A-Za-z0-9_-]*)\.([a-zA-Z0-9_.$]+)\s*(>=|<=|==|!=|>|<)\s*(?:['"]([^'"]*)['"]|([^\s]+))$/)
282
+ const presence = cond.match(/^([A-Za-z_][A-Za-z0-9_-]*)\.([a-zA-Z0-9_.$]+)$/)
283
+
284
+ if (comparison && isConditionScopeAllowed(comparison[1], alias)) {
285
+ const [, , path, op, quotedValue, unquotedValue] = comparison
286
+ const left = normalizeConditionOperand(getByPath(scopedValues, path))
287
+ const right = normalizeConditionOperand(quotedValue ?? unquotedValue ?? '')
288
+
289
+ switch (op) {
290
+ case '==':
291
+ return left === right
292
+ case '!=':
293
+ return left !== right
294
+ case '>':
295
+ return left > right
296
+ case '<':
297
+ return left < right
298
+ case '>=':
299
+ return left >= right
300
+ case '<=':
301
+ return left <= right
302
+ }
303
+ }
304
+
305
+ if (presence && isConditionScopeAllowed(presence[1], alias)) {
306
+ const [, , path] = presence
307
+ return hasConditionValue(getByPath(scopedValues, path))
308
+ }
309
+
310
+ return false
311
+ }
312
+
151
313
  export const normalizeTelHrefValue = (raw: string): string => {
152
314
  if (typeof raw !== 'string')
153
315
  return raw
@@ -207,7 +369,23 @@ export const renderTemplate = (
207
369
  ? (data as Record<string, unknown>)
208
370
  : {}
209
371
 
210
- let expanded = template.replace(SUBARRAY_BLOCK_RE, (_match, tagAlias, json, innerTpl) => {
372
+ const stashedEntries: string[] = []
373
+ const stashToken = (index: number): string => `__EDGE_ENTRIES_BLOCK_${index}__`
374
+ const restoreEntries = (input: string): string => {
375
+ return input.replace(/__EDGE_ENTRIES_BLOCK_(\d+)__/g, (_match, rawIndex) => {
376
+ const index = Number(rawIndex)
377
+ return Number.isInteger(index) && index >= 0 && index < stashedEntries.length
378
+ ? stashedEntries[index]!
379
+ : ''
380
+ })
381
+ }
382
+
383
+ let expanded = template.replace(ENTRIES_BLOCK_RE, (full) => {
384
+ const index = stashedEntries.push(full) - 1
385
+ return stashToken(index)
386
+ })
387
+
388
+ expanded = expanded.replace(SUBARRAY_BLOCK_RE, (_match, tagAlias, json, innerTpl) => {
211
389
  const cfg = parseConfig(json || '{}') ?? {}
212
390
  const fieldRaw = typeof cfg.field === 'string' ? cfg.field.trim() : ''
213
391
  let list: unknown
@@ -240,7 +418,8 @@ export const renderTemplate = (
240
418
  : (tagAlias?.trim() || undefined)
241
419
 
242
420
  const childSchema = typeof cfg.schema === 'object' ? (cfg.schema as SchemaMap) : schemaCtx
243
- return normalized.map(entry => renderSection(innerTpl, entry, childAlias, childSchema)).join('')
421
+ const nestedTemplate = restoreEntries(innerTpl)
422
+ return normalized.map(entry => renderSection(nestedTemplate, entry, childAlias, childSchema)).join('')
244
423
  })
245
424
 
246
425
  expanded = expanded.replace(ARRAY_BLOCK_RE, (_m, json, innerTpl) => {
@@ -273,7 +452,46 @@ export const renderTemplate = (
273
452
 
274
453
  const childAlias = typeof cfg.as === 'string' && cfg.as.trim() ? cfg.as.trim() : undefined
275
454
  const childSchema = typeof cfg.schema === 'object' ? (cfg.schema as SchemaMap) : schemaCtx
276
- return normalized.map(entry => renderSection(innerTpl, entry, childAlias, childSchema)).join('')
455
+ const nestedTemplate = restoreEntries(innerTpl)
456
+ return normalized.map(entry => renderSection(nestedTemplate, entry, childAlias, childSchema)).join('')
457
+ })
458
+
459
+ expanded = restoreEntries(expanded)
460
+
461
+ expanded = expanded.replace(ENTRIES_BLOCK_RE, (_match, tagAlias, json, innerTpl) => {
462
+ const cfg = parseConfig(json || '{}') ?? {}
463
+ const fieldRaw = typeof cfg.field === 'string' ? cfg.field.trim() : ''
464
+ let objectValue: unknown
465
+
466
+ if (fieldRaw) {
467
+ if (fieldRaw.startsWith('item.')) {
468
+ objectValue = getByPath(scopedValues, fieldRaw.slice(5))
469
+ }
470
+ else {
471
+ objectValue = scopedValues[fieldRaw] ?? getByPath(scopedValues, fieldRaw)
472
+ if (!isObjectRecord(objectValue))
473
+ objectValue = getByPath(values, fieldRaw)
474
+ }
475
+ }
476
+ else if (isObjectRecord(cfg.value)) {
477
+ objectValue = cfg.value
478
+ }
479
+
480
+ if (!isObjectRecord(objectValue))
481
+ return ''
482
+
483
+ const limit = Number(cfg.limit)
484
+ const owned = Object.entries(objectValue)
485
+ const normalized = Number.isFinite(limit) && limit > 0 ? owned.slice(0, limit) : owned
486
+
487
+ const childAlias = typeof cfg.as === 'string' && cfg.as.trim()
488
+ ? cfg.as.trim()
489
+ : (tagAlias?.trim() || undefined)
490
+
491
+ const childSchema = typeof cfg.schema === 'object' ? (cfg.schema as SchemaMap) : schemaCtx
492
+ return normalized.map(([key, value]) => {
493
+ return renderSection(innerTpl, { key, value }, childAlias, childSchema)
494
+ }).join('')
277
495
  })
278
496
 
279
497
  if (alias && typeof alias === 'string') {
@@ -304,70 +522,15 @@ export const renderTemplate = (
304
522
  return data == null ? '' : escapeHtml(String(data))
305
523
  })
306
524
 
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
- })
525
+ let ifBlock = findNextIfBlock(expanded)
526
+ while (ifBlock) {
527
+ const cfg = parseConfig(ifBlock.conditionJson || '{}') ?? {}
528
+ const result = evaluateCondition(cfg.cond, scopedValues, alias)
529
+ const branchTpl = result ? ifBlock.trueTpl : ifBlock.falseTpl
530
+ const rendered = renderSection(branchTpl, data, alias, schemaCtx)
531
+ expanded = `${expanded.slice(0, ifBlock.start)}${rendered}${expanded.slice(ifBlock.end)}`
532
+ ifBlock = findNextIfBlock(expanded, ifBlock.start + rendered.length)
533
+ }
371
534
 
372
535
  return expanded
373
536
  }
@@ -0,0 +1,78 @@
1
+ import test from 'node:test'
2
+ import assert from 'node:assert/strict'
3
+ import renderTemplate from '../dist/index.js'
4
+
5
+ test('entries iterates object keys and values in insertion order with limit', () => {
6
+ const content = `
7
+ {{{#array {"field":"groups","as":"group"} }}}
8
+ {{{#entries:entry {"field":"item.links","value":{},"limit":2} }}}
9
+ {{entry.key}}={{entry.value.name}}|
10
+ {{{/entries}}}
11
+ {{{/array}}}
12
+ `
13
+
14
+ const html = renderTemplate(content, {
15
+ groups: [
16
+ {
17
+ links: {
18
+ home: { name: 'Home' },
19
+ about: { name: 'About' },
20
+ contact: { name: 'Contact' },
21
+ },
22
+ },
23
+ ],
24
+ })
25
+
26
+ assert.match(html, /home=Home\|\s*about=About\|/)
27
+ assert.doesNotMatch(html, /contact=Contact\|/)
28
+ })
29
+
30
+ test('entries supports nested folder rendering with subarray children', () => {
31
+ const content = `
32
+ {{{#array {"field":"menuGroups","as":"group"} }}}
33
+ {{{#subarray:menuItem {"field":"item.menus.Site Root","value":[]} }}}
34
+ {{{#if {"cond":"menuItem.name"} }}}
35
+ <a data-type="link">{{menuItem.name}}</a>
36
+ {{{#else}}}
37
+ {{{#entries:entry {"field":"item.item","value":{}}}}}
38
+ <section data-folder="{{entry.key}}">
39
+ {{{#subarray:child {"field":"item.value","value":[]}}}}
40
+ <a data-type="child">{{child.name}}</a>
41
+ {{{/subarray}}}
42
+ </section>
43
+ {{{/entries}}}
44
+ {{{/if}}}
45
+ {{{/subarray}}}
46
+ {{{/array}}}
47
+ `
48
+
49
+ const html = renderTemplate(content, {
50
+ menuGroups: [
51
+ {
52
+ menus: {
53
+ 'Site Root': [
54
+ { name: 'Home', item: { type: 'internal', url: '/' } },
55
+ {
56
+ item: {
57
+ Products: [
58
+ { name: 'Product One', item: { type: 'internal', url: '/products/one' } },
59
+ { name: 'Product Two', item: { type: 'internal', url: '/products/two' } },
60
+ ],
61
+ Company: [
62
+ { name: 'About', item: { type: 'internal', url: '/about' } },
63
+ ],
64
+ },
65
+ },
66
+ ],
67
+ },
68
+ },
69
+ ],
70
+ })
71
+
72
+ assert.match(html, /data-type="link">Home<\/a>/)
73
+ assert.match(html, /data-folder="Products"/)
74
+ assert.match(html, /data-folder="Company"/)
75
+ assert.match(html, /data-type="child">Product One<\/a>/)
76
+ assert.match(html, /data-type="child">Product Two<\/a>/)
77
+ assert.match(html, /data-type="child">About<\/a>/)
78
+ })
@@ -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
+ })