module Colourista.IO
(
redMessage
, greenMessage
, blueMessage
, yellowMessage
, blackMessage
, whiteMessage
, magentaMessage
, cyanMessage
, successMessage
, infoMessage
, skipMessage
, warningMessage
, errorMessage
, boldMessage
, italicMessage
, formattedMessage
) where
import Data.Semigroup ((<>))
import Data.Text (Text)
import qualified Data.Text.IO as TIO
import qualified Colourista.Pure as Colourista
redMessage :: Text -> IO ()
redMessage = formattedMessage [Colourista.red]
{-# INLINE redMessage #-}
greenMessage :: Text -> IO ()
greenMessage = formattedMessage [Colourista.green]
{-# INLINE greenMessage #-}
blueMessage :: Text -> IO ()
blueMessage = formattedMessage [Colourista.blue]
{-# INLINE blueMessage #-}
yellowMessage :: Text -> IO ()
yellowMessage = formattedMessage [Colourista.yellow]
{-# INLINE yellowMessage #-}
blackMessage :: Text -> IO ()
blackMessage = formattedMessage [Colourista.black]
{-# INLINE blackMessage #-}
whiteMessage :: Text -> IO ()
whiteMessage = formattedMessage [Colourista.white]
{-# INLINE whiteMessage #-}
magentaMessage :: Text -> IO ()
magentaMessage = formattedMessage [Colourista.magenta]
{-# INLINE magentaMessage #-}
cyanMessage :: Text -> IO ()
cyanMessage = formattedMessage [Colourista.cyan]
{-# INLINE cyanMessage #-}
successMessage :: Text -> IO ()
successMessage = greenMessage
{-# INLINE successMessage #-}
infoMessage :: Text -> IO ()
infoMessage = blueMessage
{-# INLINE infoMessage #-}
skipMessage :: Text -> IO ()
skipMessage = cyanMessage
{-# INLINE skipMessage #-}
warningMessage :: Text -> IO ()
warningMessage = yellowMessage
{-# INLINE warningMessage #-}
errorMessage :: Text -> IO ()
errorMessage = redMessage
{-# INLINE errorMessage #-}
boldMessage :: Text -> IO ()
boldMessage = formattedMessage [Colourista.bold]
{-# INLINE boldMessage #-}
italicMessage :: Text -> IO ()
italicMessage = formattedMessage [Colourista.italic]
{-# INLINE italicMessage #-}
formattedMessage :: [Text] -> Text -> IO ()
formattedMessage formatting = TIO.putStrLn . Colourista.formatWith formatting
{-# INLINE formattedMessage #-}