Now with string.
import macros
import tables
var overrides {.compiletime.} = initTable[string,string]()
macro override(aStr : static[string], b: untyped) : untyped =
var x = genSym(nskTemplate)
overrides[aStr] = x.strVal
result = quote do:
template `x`() : untyped =
`b`
macro section(aStr : static[string], b : untyped) : untyped =
if aStr in overrides:
let templateName = ident(overrides[aStr])
result = quote do:
`templateName`()
else:
result = b
override "redbox":
echo "Hello"
section "redbox":
echo "Goodbye"
section "whatever":
echo "Hello World!"
Run