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