-- | Provides an extended printer class that supports colours. module Text.Chatty.Extended.Printer where import Text.Chatty.Printer -- | Colour tone. data Tone = Green | Red | Yellow | Blue | Black | White | Cyan | Magenta -- | Colour brightness data Colour = Dull Tone | Vivid Tone -- | Typeclass for all printers that support colourized output. class MonadPrinter m => ExtendedPrinter m where -- | Run the function with the given colour. ebracket :: Colour -> m a -> m a ebracket c m = do estart c; a <- m; efin; return a -- | Print the string in the given colour. eprint :: Colour -> String -> m () eprint c = ebracket c . mprint -- | Print the string in the given colour and terminate the line. eprintLn :: Colour -> String -> m () eprintLn c s = eprint c s >> mprintLn "" -- | Start using the specified colour. estart :: Colour -> m () -- | Reset colour. efin :: m ()