diff --git a/examples/parsing/misc.hank b/examples/parsing/misc.hank index 83e6b75..2a2aabf 100644 --- a/examples/parsing/misc.hank +++ b/examples/parsing/misc.hank @@ -5,7 +5,11 @@ across more than one line */ ~ var demo_var = "dynamic content"; // Hank scripts can embed Haxe logic by starting a line with '~' == knot_example +=== knot_example +===knot_example +==knot_example = stitch_example +=stitch_example -> divert_example ->divert_example ->divert_example diff --git a/hank/Parser.hx b/hank/Parser.hx index f859079..5a34743 100644 --- a/hank/Parser.hx +++ b/hank/Parser.hx @@ -134,13 +134,21 @@ class Parser { } static function knot(buffer: HankBuffer, position: HankBuffer.Position) : ExprType { - var tokens = lineTokens(buffer, 2, position); - return EKnot(tokens[1]); + buffer.drop('=='); + if (buffer.peekAhead(0, 1) == '=') + { + buffer.drop('='); + } + buffer.skipWhitespace(); + var tokens = lineTokens(buffer, 1, position); + return EKnot(tokens[0]); } static function stitch(buffer: HankBuffer, position: HankBuffer.Position) : ExprType { - var tokens = lineTokens(buffer, 2, position); - return EStitch(tokens[1]); + buffer.drop('='); + buffer.skipWhitespace(); + var tokens = lineTokens(buffer, 1, position); + return EStitch(tokens[0]); } static function haxeLine(buffer: HankBuffer, position: HankBuffer.Position) : ExprType { diff --git a/tests/ParserTest.hx b/tests/ParserTest.hx index c544f39..931f5fd 100644 --- a/tests/ParserTest.hx +++ b/tests/ParserTest.hx @@ -89,6 +89,10 @@ class ParserTest extends utest.Test { ast = parser.parseFile('examples/parsing/misc.hank'); assertNextExpr(EHaxeLine('var demo_var = "dynamic content";')); assertNextExpr(EKnot("knot_example")); + assertNextExpr(EKnot("knot_example")); + assertNextExpr(EKnot("knot_example")); + assertNextExpr(EKnot("knot_example")); + assertNextExpr(EStitch("stitch_example")); assertNextExpr(EStitch("stitch_example")); assertNextExpr(EDivert("divert_example")); assertNextExpr(EDivert("divert_example"));