Skip to content

Commit 1007199

Browse files
committed
refactor(compiler): improve parameter replacement logic and fix formatting
- Replace regex-based parameter replacement with iterative Object.entries approach - Update parameter placeholder matching to use individual RegExp per key for clarity - Add trailing comma to escapedPlaceholders.map() for consistent formatting - Simplify template content replacement by processing each parameter individually - Improves maintainability and reduces complexity of parameter substitution logic
1 parent a4e19f6 commit 1007199

1 file changed

Lines changed: 7 additions & 8 deletions

File tree

src/compiler.ts

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ function restoreCodeBlocks(
5555

5656
// Escape special regex characters in placeholders
5757
const escapedPlaceholders = placeholders.map((p) =>
58-
p.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")
58+
p.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"),
5959
);
6060
const regex = new RegExp(`(${escapedPlaceholders.join("|")})`, "g");
6161

@@ -218,13 +218,12 @@ async function processWrapperTags(
218218
if (templateContent) {
219219
const params = attrs["params"] ? parseParams(attrs["params"]) : {};
220220
if (params) {
221-
// Replace all parameter placeholders in a single pass
222-
templateContent = templateContent.replace(
223-
/{{\s*(\w+)\s*}}/g,
224-
(_, key) => {
225-
return String(params[key] ?? "");
226-
},
227-
);
221+
Object.entries(params).forEach(([key, value]) => {
222+
templateContent = templateContent!.replace(
223+
new RegExp(`{{\\s*${key}\\s*}}`, "g"),
224+
String(value),
225+
);
226+
});
228227
}
229228
innerContent = restoreCodeBlocks(innerContent, codeBlocks);
230229
innerContent = md.render(innerContent);

0 commit comments

Comments
 (0)