summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorAraq <rumpf_a@web.de>2013-07-25 23:40:29 +0200
committerAraq <rumpf_a@web.de>2013-07-25 23:40:29 +0200
commit05108cf81c3758ce8fbe9026470de296c9b264a1 (patch)
tree2cc5b48002ed8e25bbab73ef4493fd40babe8c02
parentf3a2eec13babbb9dff7f4852303e0bd523af2df5 (diff)
parente360d048bab2af6d7542d4ea8549778a657bad0d (diff)
downloadNim-05108cf81c3758ce8fbe9026470de296c9b264a1.tar.gz
Merge branch 'master' of github.com:Araq/Nimrod
-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: