diff options
author | Araq <rumpf_a@web.de> | 2014-05-06 00:05:30 +0200 |
---|---|---|
committer | Araq <rumpf_a@web.de> | 2014-05-06 00:05:30 +0200 |
commit | fe690a2c9105610986d3ebb3f7bb7bbac9176c24 (patch) | |
tree | 3b226ddaa772aef9d57922c949feee2708429393 | |
parent | 4055fd437633c140f0c7fa94ef13d41557eee9a6 (diff) | |
download | Nim-fe690a2c9105610986d3ebb3f7bb7bbac9176c24.tar.gz |
added test case for bug #1140
-rw-r--r-- | tests/macros/tgentemplates.nim | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/tests/macros/tgentemplates.nim b/tests/macros/tgentemplates.nim new file mode 100644 index 000000000..a7727c597 --- /dev/null +++ b/tests/macros/tgentemplates.nim @@ -0,0 +1,35 @@ +# bug #1140 + +import parseutils, macros + +proc parse_until_symbol(node: PNimrodNode, value: string, index: var int): bool {.compiletime.} = + var splitValue: string + var read = value.parseUntil(splitValue, '$', index) + + # when false: + if false: + var identifier: string + read = value.parseWhile(identifier, {}, index) + node.add newCall("add", ident("result"), newCall("$", ident(identifier))) + + if splitValue.len > 0: + node.insert node.len, newCall("add", ident("result"), newStrLitNode(splitValue)) + +proc parse_template(node: PNimrodNode, value: string) {.compiletime.} = + var index = 0 + while index < value.len and + parse_until_symbol(node, value, index): discard + +macro tmpli*(body: expr): stmt = + result = newStmtList() + result.add parseExpr("result = \"\"") + result.parse_template body[1].strVal + + +proc actual: string = tmpli html""" + <p>Test!</p> + """ + +proc another: string = tmpli html""" + <p>what</p> + """ |