packages feed

fquery-0.2.2: Adelie/Colour.hs

-- Colour.hs
--
-- Escape codes for colouring in output.

module Adelie.Colour (
    gray,     inGray,
    red,      inRed,
    green,    inGreen,
    yellow,   inYellow,
    blue,     inBlue,
    magenta,  inMagenta,
    cyan,     inCyan,
    white,    inWhite,
    off,
    off2
) where

import Control.Monad (when)

import Adelie.Options

gray, red, green, yellow, blue, magenta, cyan, white, off, off2 :: IO ()

gray    = whenM colourEnabled $ putStr "\27[30;01m"
red     = whenM colourEnabled $ putStr "\27[31;01m"
green   = whenM colourEnabled $ putStr "\27[32;01m"
yellow  = whenM colourEnabled $ putStr "\27[33;01m"
blue    = whenM colourEnabled $ putStr "\27[34;01m"
magenta = whenM colourEnabled $ putStr "\27[35;01m"
cyan    = whenM colourEnabled $ putStr "\27[36;01m"
white   = whenM colourEnabled $ putStr "\27[37;01m"
off     = whenM colourEnabled $ putStr "\27[0m"
off2    = do
  true <- colourEnabled
  if true
    then putStrLn "\27[0m"
    else putChar '\n'

whenM :: IO Bool -> IO () -> IO ()
whenM cond f = cond >>= flip when f

----------------------------------------------------------------

inGray, inRed, inGreen, inYellow    :: IO () -> IO ()
inBlue, inMagenta, inCyan, inWhite  :: IO () -> IO ()

inGray    f = gray    >> f >> off
inRed     f = red     >> f >> off
inGreen   f = yellow  >> f >> off
inYellow  f = yellow  >> f >> off
inBlue    f = blue    >> f >> off
inMagenta f = magenta >> f >> off
inCyan    f = cyan    >> f >> off
inWhite   f = white   >> f >> off