summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorAraq <rumpf_a@web.de>2014-05-06 00:05:30 +0200
committerAraq <rumpf_a@web.de>2014-05-06 00:05:30 +0200
commitfe690a2c9105610986d3ebb3f7bb7bbac9176c24 (patch)
tree3b226ddaa772aef9d57922c949feee2708429393
parent4055fd437633c140f0c7fa94ef13d41557eee9a6 (diff)
downloadNim-fe690a2c9105610986d3ebb3f7bb7bbac9176c24.tar.gz
added test case for bug #1140
-rw-r--r--tests/macros/tgentemplates.nim35
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>
+    """