module Test.Console.Color ( red, magenta, black, blue, yellow, green, grey, underlined, Colored (Colors, NoColors), Style, styled, maybeStyled, ) where import qualified Data.Text import Data.Text (Text) import qualified System.Console.ANSI as Console type Style = [Console.SGR] code :: Style -> Text code = Data.Text.pack . Console.setSGRCode styled :: Style -> Text -> Text styled col t = code col <> t <> code [reset] maybeStyled :: Colored -> Style -> Text -> Text maybeStyled colored styles text = case colored of Colors -> styled styles text NoColors -> text data Colored = Colors | NoColors reset :: Console.SGR reset = Console.Reset red :: Console.SGR red = Console.SetColor Console.Foreground Console.Dull Console.Red magenta :: Console.SGR magenta = Console.SetColor Console.Foreground Console.Dull Console.Magenta blue :: Console.SGR blue = Console.SetColor Console.Foreground Console.Dull Console.Blue yellow :: Console.SGR yellow = Console.SetColor Console.Foreground Console.Dull Console.Yellow green :: Console.SGR green = Console.SetColor Console.Foreground Console.Dull Console.Green grey :: Console.SGR grey = Console.SetColor Console.Foreground Console.Vivid Console.Black black :: Console.SGR black = Console.SetColor Console.Foreground Console.Dull Console.White underlined :: Console.SGR underlined = Console.SetUnderlining Console.SingleUnderline