diff options
Diffstat (limited to 'tests/macros/tmacro8.nim')
-rw-r--r-- | tests/macros/tmacro8.nim | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/tests/macros/tmacro8.nim b/tests/macros/tmacro8.nim new file mode 100644 index 000000000..fdcec4dd4 --- /dev/null +++ b/tests/macros/tmacro8.nim @@ -0,0 +1,35 @@ +# issue #8573 + +import + macros, + strutils, + terminal + +type LogSeverity* = enum + sevError = "Error" + sevWarn = "Warn" + sevInfo = "Info" + sevDebug = "Debug" + +macro log*(severity: static[LogSeverity], group: static[string], m: varargs[typed]): untyped = + let sevStr = align("[" & toUpperAscii($severity) & "] ", 8) + let sevColor = case severity + of sevError: fgRed + of sevWarn: fgYellow + of sevInfo: fgWhite + of sevDebug: fgBlack + + let groupStr = "[" & $group & "] " + + result = quote do: + setStyle({ styleBright }) + setForegroundColor(sevColor) # <== + write(stdout, sevStr) + + setStyle({ styleDim }) + setForegroundColor(fgWhite) + write(stdout, groupStr) + + let wl = newCall(bindSym"styledWriteLine", bindSym"stdout") + for arg in m: wl.add(arg) + result.add(wl) |