diff --git a/Stencil/Lexer.swift b/Stencil/Lexer.swift index 8913290..71147bb 100644 --- a/Stencil/Lexer.swift +++ b/Stencil/Lexer.swift @@ -10,7 +10,7 @@ import Foundation public struct Lexer { public let templateString:String - let regex = NSRegularExpression(pattern: "(\\{\\{.*\\}\\}|\\{%.*%\\}|\\{#.*#\\})", options: nil, error: nil) + let regex = NSRegularExpression(pattern: "(\\{\\{.*?\\}\\}|\\{%.*?%\\}|\\{#.*?#\\})", options: nil, error: nil) public init(templateString:String) { self.templateString = templateString diff --git a/StencilTests/LexerTests.swift b/StencilTests/LexerTests.swift index dc13be7..83e516a 100644 --- a/StencilTests/LexerTests.swift +++ b/StencilTests/LexerTests.swift @@ -46,4 +46,13 @@ class LexerTests: XCTestCase { XCTAssertEqual(tokens[2], Token.Text(value: ".")) } + func testTokenizeTwoVariables() { // Don't be greedy + let lexer = Lexer(templateString:"{{ thing }}{{ name }}") + let tokens = lexer.tokenize() + + XCTAssertEqual(tokens.count, 2) + XCTAssertEqual(tokens[0], Token.Variable(value: "thing")) + XCTAssertEqual(tokens[1], Token.Variable(value: "name")) + } + }