-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | Convenient interface for printing colourful messages
--   
--   Convenient interface for printing colourful messages based on the
--   <tt>ansi-terminal</tt> library.
@package colourista
@version 0.1.0.2


-- | This module introduces helpful pure codes to customise the terminal
--   output view.
module Colourista.Pure

-- | General purpose function to format strings with multiple options. If
--   this function takes empty list as an argument, no formatting is
--   applied.
--   
--   Some typical usages include but not limited to:
--   
--   <ol>
--   <li>Green text: <tt><a>formatWith</a> [<a>green</a>]
--   myString</tt></li>
--   <li>Bold red text: <tt><a>formatWith</a> [<a>bold</a>, <a>red</a>]
--   myString</tt></li>
--   <li>Blue text on white background: <tt><a>formatWith</a> [<a>blue</a>,
--   <a>whiteBg</a>] myString</tt></li>
--   <li>Italicized yellow on cyan background: <tt><a>formatWith</a>
--   [<a>italic</a>, <a>yellow</a>, <a>cyanBg</a>] myString</tt></li>
--   </ol>
--   
--   
--   <b>⚠ Caution:</b> Double underlining <a>doubleUnderline</a> is not
--   widely supported. It is also not natively supported on Windows 10.
formatWith :: (IsString str, Semigroup str) => [str] -> str -> str

-- | Code to apply <a>Red</a> colouring for the terminal output.
red :: IsString str => str

-- | Code to apply <a>Green</a> colouring for the terminal output.
green :: IsString str => str

-- | Code to apply <a>Blue</a> colouring for the terminal output.
blue :: IsString str => str

-- | Code to apply <a>Yellow</a> colouring for the terminal output.
yellow :: IsString str => str

-- | Code to apply <a>Black</a> colouring for the terminal output.
black :: IsString str => str

-- | Code to apply <a>White</a> colouring for the terminal output.
white :: IsString str => str

-- | Code to apply <a>Magenta</a> colouring for the terminal output.
magenta :: IsString str => str

-- | Code to apply <a>Cyan</a> colouring for the terminal output.
cyan :: IsString str => str

-- | Code to apply <a>Red</a> background colouring for the terminal output.
redBg :: IsString str => str

-- | Code to apply <a>Green</a> background colouring for the terminal
--   output.
greenBg :: IsString str => str

-- | Code to apply <a>Blue</a> background colouring for the terminal
--   output.
blueBg :: IsString str => str

-- | Code to apply <a>Yellow</a> background colouring for the terminal
--   output.
yellowBg :: IsString str => str

-- | Code to apply <a>Black</a> background colouring for the terminal
--   output.
blackBg :: IsString str => str

-- | Code to apply <a>White</a> background colouring for the terminal
--   output.
whiteBg :: IsString str => str

-- | Code to apply <a>Magenta</a> background colouring for the terminal
--   output.
magentaBg :: IsString str => str

-- | Code to apply <a>Cyan</a> background colouring for the terminal
--   output.
cyanBg :: IsString str => str

-- | Code to apply <b>bold</b> emphasis for the terminal output.
bold :: IsString str => str

-- | Code to apply <i>italic</i> emphasis for the terminal output.
italic :: IsString str => str

-- | Code to apply <b>underline</b> emphasis for the terminal output.
underline :: IsString str => str

-- | Code to apply <b>double underline</b> emphasis for the terminal
--   output.
--   
--   <b>⚠ Caution:</b> This is not widely supported. It is not natively
--   supported on Windows 10
doubleUnderline :: IsString str => str

-- | Code to apply <b>no underline</b> emphasis for the terminal output.
noUnderline :: IsString str => str

-- | Code to indent the terminal output by the given amount of spaces.
indent :: (IsString str, Semigroup str) => Int -> str

-- | Code to reset all previous code applied for the terminal output.
reset :: IsString str => str


-- | Functions to output formatted <a>Text</a> directly to terminal.
module Colourista.IO

-- | Print <a>Text</a> coloured in <a>red</a>.
redMessage :: Text -> IO ()

-- | Print <a>Text</a> coloured in <a>green</a>.
greenMessage :: Text -> IO ()

-- | Print <a>Text</a> coloured in <a>blue</a>.
blueMessage :: Text -> IO ()

-- | Print <a>Text</a> coloured in <a>yellow</a>.
yellowMessage :: Text -> IO ()

-- | Print <a>Text</a> coloured in <a>black</a>.
blackMessage :: Text -> IO ()

-- | Print <a>Text</a> coloured in <a>white</a>.
whiteMessage :: Text -> IO ()

-- | Print <a>Text</a> coloured in <a>magenta</a>.
magentaMessage :: Text -> IO ()

-- | Print <a>Text</a> coloured in <a>cyan</a>.
cyanMessage :: Text -> IO ()

-- | Similar to <a>greenMessage</a>, but add unicode indicator.
--   
successMessage :: Text -> IO ()

-- | Similar to <a>blueMessage</a>, but add unicode indicator.
--   
infoMessage :: Text -> IO ()

-- | Similar to <a>cyanMessage</a>, but add unicode indicator.
--   
skipMessage :: Text -> IO ()

-- | Similar to <a>yellowMessage</a>, but add unicode indicator.
--   
warningMessage :: Text -> IO ()

-- | Similar to <a>redMessage</a>, but add unicode indicator.
--   
errorMessage :: Text -> IO ()

-- | Print <a>Text</a> emphasized with <a>bold</a>.
boldMessage :: Text -> IO ()

-- | Print <a>Text</a> emphasized with <a>italic</a>.
italicMessage :: Text -> IO ()

-- | Print message with specified list of formatting options. See
--   <a>formatWith</a> for more details. If this function takes empty list,
--   no formatting is applied.
--   
formattedMessage :: [Text] -> Text -> IO ()


-- | Improve your terminal output with the handy helpers of
--   <tt>ansi-terminal</tt> functions that <tt>colourista</tt> provides to
--   you.
--   
module Colourista


-- | This module contains short aliases for most frequently used pure
--   functions.
module Colourista.Short

-- | Short alias for <a>bold</a>.
b :: (IsString str, Semigroup str) => str -> str

-- | Short alias for <a>italic</a>.
i :: (IsString str, Semigroup str) => str -> str

-- | Short alias for <a>underline</a>.
u :: (IsString str, Semigroup str) => str -> str
