Quick actions

cmd+k|ctrl+k

Navigation

Languages

macro error

Snippet info

Language

Nim

Visibility

unlisted

Author

legacy-anonymous

Created

2017-07-22T19:38:23Z

Updated

2017-07-22T19:38:23Z

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")
INFO