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

Reply via email to