import macros
import tables
macro `@` (name, body: untyped): typed =
result = newNimNode(nnkCall)
var tmpTable = newNimNode(nnkTableConstr)
result.add(name)
if body.kind != nnkPar:
quit "Syntax error"
for arg in body.children:
case arg.kind:
of nnkExprEqExpr: tmpTable.add(newColonExpr(arg[0].toStrLit, arg[1]))
else: result.add(arg)
result.add(newNimNode(nnkExprEqExpr).add(ident("kwargs"), newCall("toTable", tmpTable) ))
echo repr(result)
proc myFunc(a, b: int, kwargs: Table[string, string]): int =
for key, value in kwargs:
echo(key, ": ", value)
return 10
var i = myFunc@(45, 78, hello="world", name="cyberlis", qwerty="xxxxx")