summary refs log blame commit diff stats
path: root/tests/macros/tmacro8.nim
blob: fdcec4dd4e76aa7b9b02574ef302a51fa421638f (plain) (tree)


































                                                                                              
# 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)