module System.Wlog.Color
( colorizer
, colorizerT
) where
import qualified Data.Text as T
import System.Console.ANSI (Color (Blue, Green, Magenta, Red, Yellow),
ColorIntensity (Vivid), ConsoleLayer (Foreground),
SGR (Reset, SetColor), setSGRCode)
import Universum
import System.Wlog.Severity (Severity (..))
table :: Severity -> (String, String)
table severity = case severity of
Error -> (setColor Red , reset)
Debug -> (setColor Green , reset)
Notice -> (setColor Magenta , reset)
Warning -> (setColor Yellow , reset)
Info -> (setColor Blue , reset)
where
setColor color = setSGRCode [SetColor Foreground Vivid color]
reset = setSGRCode [Reset]
colorizer :: Severity -> String -> String
colorizer pr s =
let (before, after) = table pr in before <> s <> after
colorizerT :: Severity -> Text -> Text
colorizerT pr s =
let (before, after) = table pr in T.pack before <> s <> T.pack after