Files
plainleaf/common/template/template_parser.test.ts
T
MrMugameandGitHub 9ed493aa00 Makes the behaviour of logic expressions consistent in all cases (#898)
* Returned the value of a logic expression in all cases

* Remove legacy call syntax

* Correct test

* Remove old call syntax from docs/library

* Corrected docs for call syntax

* Add null coalescing operator
2024-07-02 19:12:40 +02:00

57 lines
1.2 KiB
TypeScript

import { assertEquals } from "$std/testing/asserts.ts";
import { parseTemplate } from "./template_parser.ts";
Deno.test("Test template", () => {
assertEquals(parseTemplate(`{{.}}`), ["Template", ["TemplateElement", [
"ExpressionDirective",
[
"Expression",
["TopLevelVal", "."],
],
]]]);
assertEquals(parseTemplate(`{{{page}}}`), ["Template", ["TemplateElement", [
"ExpressionDirective",
["Expression", ["QueryExpression", "{", ["Query", [
"TagIdentifier",
"page",
]], "}"]],
]]]);
assertEquals(parseTemplate(`{{escapeRegexp(@page.name)}}`), ["Template", [
"TemplateElement",
["ExpressionDirective", ["Expression", [
"Call",
["Identifier", "escapeRegexp"],
"(",
["Expression", [
"Attribute",
[
"Expression",
["GlobalIdentifier", "@page"],
],
".",
[
"Identifier",
"name",
],
]],
")",
]]],
]]);
const tree = parseTemplate(`
# My template
{{#each .}}
* Page: {{name}}
{{#if somethingComplicated(something)}}
Sup
{{else}}
Not sup
{{/if}}
{{/each}}
`);
console.log(JSON.stringify(tree, null, 2));
});