import macros, strutils
macro typeGen(tName, extra: untyped): untyped =
var typeStr = """
type
tName = object
fname: string
age: int"""
typeStr = replace(typeStr, "tName", $tName)
add(typeStr, "\l ")
for f in extra:
add(typeStr, repr(f[0]) & ':' & repr(f[1][0]))
add(typeStr, "\l ")
return parseStmt(typeStr)
typeGen Test:
a: bool
b: byte
echo Test()