feat: Allow tokens to be escaped

This commit is contained in:
T. R. Bernstein
2025-09-30 22:54:19 +02:00
parent 25d1507159
commit c25b7a52e7
3 changed files with 37 additions and 7 deletions

View File

@@ -20,6 +20,22 @@ final class LexerTests: XCTestCase {
try expect(tokens.first) == .comment(value: "Comment", at: makeSourceMap("Comment", for: lexer))
}
func testEscapedVariableToken() throws {
let lexer = Lexer(templateString: "\\{{ Variable }}")
let tokens = lexer.tokenize()
try expect(tokens.count) == 1
try expect(tokens.first) == .text(value: "{{ Variable }}", at: makeSourceMap("{{ Variable }}", for: lexer))
}
func testEscapedBehaviourToken() throws {
let lexer = Lexer(templateString: "\\{% Variable %}")
let tokens = lexer.tokenize()
try expect(tokens.count) == 1
try expect(tokens.first) == .text(value: "{% Variable %}", at: makeSourceMap("{% Variable %}", for: lexer))
}
func testVariable() throws {
let lexer = Lexer(templateString: "{{ Variable }}")
let tokens = lexer.tokenize()

View File

@@ -15,5 +15,11 @@ final class TemplateTests: XCTestCase {
let result = try template.render([ "name": "Kyle" ])
try expect(result) == "Hello World"
}
it("can render a template with escaped token") {
let template: Template = "Hello \\{{ name }}"
let result = try template.render([ "name": "Kyle" ])
try expect(result) == "Hello {{ name }}"
}
}
}