Skip to content

Commit 51903de

Browse files
fix(storefront): bctheme-1331 Incorrect handling of nested external templates with params (#1031)
1 parent e0b76d2 commit 51903de

1 file changed

Lines changed: 14 additions & 1 deletion

File tree

lib/template-assembler.js

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ const path = require('path');
55
const upath = require('upath');
66

77
const partialRegex = /\{\{>\s*([_|\-|a-zA-Z0-9@'"/]+)[^{]*?}}/g;
8+
const partialWithoutBracketsRegex = /[^>{{}}\s*]+/g;
89
const dynamicComponentRegex = /\{\{\s*?dynamicComponent\s*(?:'|")([_|\-|a-zA-Z0-9/]+)(?:'|").*?}}/g;
910
const includeRegex = /{{2}>\s*([_|\-|a-zA-Z0-9/]+)[^{]*?}{2}/g;
1011
const pathStringRegex = /^["'].+["']$/;
@@ -23,12 +24,24 @@ const defineBaseRoute = (route) => route.split('/').slice(0, 3).join('/');
2324
const applyExternalPath = (templateName, templates) => {
2425
return templates.map((t) => `${defineBaseRoute(templateName)}/${t}`);
2526
};
27+
const modifyNestedPartial = (partial) => {
28+
const partialFragments = partial.match(partialWithoutBracketsRegex);
29+
30+
if (partialFragments) {
31+
return [`${partialFragments.shift()}'`, ...partialFragments].join(' ');
32+
}
33+
34+
return partialFragments;
35+
};
36+
2637
const replacePartialNames = (content, partialRoute) => {
2738
return content.replace(
2839
includeRegex,
29-
(__, partialName) => `{{> '${defineBaseRoute(partialRoute)}/${partialName}' }}`,
40+
(partialName) =>
41+
`{{> '${defineBaseRoute(partialRoute)}/${modifyNestedPartial(partialName)} }}`,
3042
);
3143
};
44+
3245
const trimPartial = (partial) => {
3346
if (pathStringRegex.test(partial)) {
3447
return partial.slice(1, -1);

0 commit comments

Comments
 (0)