fix(lexer): Prevent deadlock with unclosed tag

This commit is contained in:
Krzysztof Zabłocki
2017-05-17 22:03:43 +02:00
committed by Kyle Fuller
parent 65a461d0a1
commit 584ed916ab
2 changed files with 10 additions and 1 deletions

View File

@@ -90,6 +90,7 @@ class Scanner {
index = content.index(after: index) index = content.index(after: index)
} }
content = ""
return "" return ""
} }

View File

@@ -16,7 +16,7 @@ func testLexer() {
let lexer = Lexer(templateString: "{# Comment #}") let lexer = Lexer(templateString: "{# Comment #}")
let tokens = lexer.tokenize() let tokens = lexer.tokenize()
try expect(tokens.count) == (1) try expect(tokens.count) == 1
try expect(tokens.first) == .comment(value: "Comment") try expect(tokens.first) == .comment(value: "Comment")
} }
@@ -28,6 +28,14 @@ func testLexer() {
try expect(tokens.first) == .variable(value: "Variable") try expect(tokens.first) == .variable(value: "Variable")
} }
$0.it("can tokenize unclosed tag by ignoring it") {
let lexer = Lexer(templateString: "{{ thing")
let tokens = lexer.tokenize()
try expect(tokens.count) == 1
try expect(tokens.first) == .text(value: "")
}
$0.it("can tokenize a mixture of content") { $0.it("can tokenize a mixture of content") {
let lexer = Lexer(templateString: "My name is {{ name }}.") let lexer = Lexer(templateString: "My name is {{ name }}.")
let tokens = lexer.tokenize() let tokens = lexer.tokenize()