summary refs log tree commit diff stats
path: root/lib/core
diff options
context:
space:
mode:
authorDominik Picheta <dominikpicheta@googlemail.com>2013-07-25 22:15:07 +0100
committerDominik Picheta <dominikpicheta@googlemail.com>2013-07-25 22:15:34 +0100
commite360d048bab2af6d7542d4ea8549778a657bad0d (patch)
treea59f93c9b1bf85f89cd400907fb912ce93b890b6 /lib/core
parenta59874e312cf7486a4e5fcbd572a3701e22ad451 (diff)
downloadNim-e360d048bab2af6d7542d4ea8549778a657bad0d.tar.gz
Added macros.newIfStmt and macros.newVarStmt.
Diffstat (limited to 'lib/core')
-rw-r--r--lib/core/macros.nim24
1 files changed, 23 insertions, 1 deletions
diff --git a/lib/core/macros.nim b/lib/core/macros.nim
index 9130c3ffb..856bc0929 100644
--- a/lib/core/macros.nim
+++ b/lib/core/macros.nim
@@ -429,11 +429,17 @@ proc newStmtList*(stmts: varargs[PNimrodNode]): PNimrodNode {.compileTime.}=
 proc newBlockStmt*(label, body: PNimrodNode): PNimrodNode {.compileTime.} =
   ## Create a new block statement with label
   return newNimNode(nnkBlockStmt).add(label, body)
+
 proc newBlockStmt*(body: PNimrodNode): PNimrodNode {.compiletime.} =
   ## Create a new block: stmt
   return newNimNode(nnkBlockStmt).add(newEmptyNode(), body)
 
-proc newLetStmt*(name, value: PNimrodNode): PNimrodNode{.compiletime.} =
+proc newVarStmt*(name, value: PNimrodNode): PNimrodNode {.compiletime.} =
+  ## Create a new var stmt 
+  return newNimNode(nnkVarSection).add(
+    newNimNode(nnkIdentDefs).add(name, newNimNode(nnkEmpty), value))
+
+proc newLetStmt*(name, value: PNimrodNode): PNimrodNode {.compiletime.} =
   ## Create a new let stmt 
   return newNimNode(nnkLetSection).add(
     newNimNode(nnkIdentDefs).add(name, newNimNode(nnkEmpty), value))
@@ -484,6 +490,22 @@ proc newProc*(name = newEmptyNode(); params: openarray[PNimrodNode] = [];
     newEmptyNode(),
     body)
 
+proc newIfStmt*(branches: varargs[tuple[cond, body: PNimrodNode]]): 
+                PNimrodNode {.compiletime.} =
+  ## Constructor for ``if`` statements.
+  ##
+  ## .. code-block:: nimrod
+  ##    
+  ##    newIfStmt(
+  ##      (Ident, StmtList),
+  ##      ...
+  ##    )
+  ##
+  result = newNimNode(nnkIfStmt)
+  for i in branches:
+    result.add(newNimNode(nnkElifBranch).add(i.cond, i.body))
+    
+
 proc copyChildrenTo*(src, dest: PNimrodNode) {.compileTime.}=
   ## Copy all children from `src` to `dest`
   for i in 0 .. < src.len: