Skip to content

Commit ecc942c

Browse files
committed
chore: remove redundant else and add check in loop
1 parent e37547a commit ecc942c

File tree

2 files changed

+27
-39
lines changed

2 files changed

+27
-39
lines changed

packages/util-endpoints/src/utils/evaluateTemplate.spec.ts

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,6 @@ describe(evaluateTemplate.name, () => {
1313
jest.clearAllMocks();
1414
});
1515

16-
it("should not escape template with empty parameter", () => {
17-
const templateWithEmptyParam = "foo {} bar";
18-
expect(evaluateTemplate(templateWithEmptyParam, mockOptions)).toEqual(templateWithEmptyParam);
19-
});
20-
2116
it("should not escape template without braces", () => {
2217
const templateWithoutBraces = "foo bar baz";
2318
expect(evaluateTemplate(templateWithoutBraces, mockOptions)).toEqual(templateWithoutBraces);

packages/util-endpoints/src/utils/evaluateTemplate.ts

Lines changed: 27 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -10,47 +10,40 @@ export const evaluateTemplate = (template: string, options: EvaluateOptions) =>
1010
} as Record<string, string>;
1111

1212
let currentIndex = 0;
13-
while (true) {
13+
while (currentIndex < template.length) {
1414
const openingBraceIndex = template.indexOf("{", currentIndex);
1515

1616
if (openingBraceIndex === -1) {
17-
// No more opening braces, add the rest of the template and break
17+
// No more opening braces, add the rest of the template and break.
1818
evaluatedTemplateArr.push(template.slice(currentIndex));
1919
break;
20+
}
21+
22+
evaluatedTemplateArr.push(template.slice(currentIndex, openingBraceIndex));
23+
const closingBraceIndex = template.indexOf("}", openingBraceIndex);
24+
25+
if (closingBraceIndex === -1) {
26+
// No more closing braces, add the rest of the template and break.
27+
evaluatedTemplateArr.push(template.slice(openingBraceIndex));
28+
break;
29+
}
30+
31+
if (template[openingBraceIndex + 1] === "{" && template[closingBraceIndex + 1] === "}") {
32+
// Escaped expression. Do not evaluate.
33+
evaluatedTemplateArr.push(template.slice(openingBraceIndex + 1, closingBraceIndex));
34+
currentIndex = closingBraceIndex + 2;
35+
}
36+
37+
const parameterName = template.substring(openingBraceIndex + 1, closingBraceIndex);
38+
39+
if (parameterName.includes("#")) {
40+
const [refName, attrName] = parameterName.split("#");
41+
evaluatedTemplateArr.push(getAttr(templateContext[refName], attrName) as string);
2042
} else {
21-
evaluatedTemplateArr.push(template.slice(currentIndex, openingBraceIndex));
22-
const closingBraceIndex = template.indexOf("}", openingBraceIndex);
23-
24-
if (closingBraceIndex === -1) {
25-
// Invalid template, but pass as it is.
26-
evaluatedTemplateArr.push(template.slice(openingBraceIndex));
27-
break;
28-
}
29-
30-
if (closingBraceIndex === openingBraceIndex + 1) {
31-
// Empty parameter, pass as it is.
32-
evaluatedTemplateArr.push(template.slice(openingBraceIndex, closingBraceIndex + 1));
33-
currentIndex = closingBraceIndex + 1;
34-
continue;
35-
}
36-
37-
if (template[openingBraceIndex + 1] === "{" && template[closingBraceIndex + 1] === "}") {
38-
// Escaped expression. Do not evaluate.
39-
evaluatedTemplateArr.push(template.slice(openingBraceIndex + 1, closingBraceIndex));
40-
currentIndex = closingBraceIndex + 2;
41-
}
42-
43-
const parameterName = template.substring(openingBraceIndex + 1, closingBraceIndex);
44-
45-
if (parameterName.includes("#")) {
46-
const [refName, attrName] = parameterName.split("#");
47-
evaluatedTemplateArr.push(getAttr(templateContext[refName], attrName) as string);
48-
} else {
49-
evaluatedTemplateArr.push(templateContext[parameterName]);
50-
}
51-
52-
currentIndex = closingBraceIndex + 1;
43+
evaluatedTemplateArr.push(templateContext[parameterName]);
5344
}
45+
46+
currentIndex = closingBraceIndex + 1;
5447
}
5548

5649
return evaluatedTemplateArr.join("");

0 commit comments

Comments
 (0)