module Chatty.Extended.Printer where

import Chatty.Printer

data Tone = Green | Red | Yellow | Blue | Black | White | Cyan | Magenta
data Colour = Dull Tone | Vivid Tone

class MonadPrinter m => ExtendedPrinter m where
  ebracket :: Colour -> m a -> m a
  ebracket c m = do estart c; a <- m; efin; return a
  eprint :: Colour -> String -> m ()
  eprint c = ebracket c . mprint
  eprintLn :: Colour -> String -> m ()
  eprintLn c s = eprint c s >> mprintLn ""
  estart :: Colour -> m ()
  efin :: m ()