{-# OPTIONS_GHC
   -fno-warn-missing-signatures -fno-warn-type-defaults #-}

module Blockchain.Colors
  ( red
  , green
  , yellow
  , blue
  , magenta
  , cyan
  , white2
  , white
  , black
  , bright
  , dim
  , underline
  , blink
  , Blockchain.Colors.reverse
  , hidden
  , setTitle
  ) where

bright string = "\ESC[1m" ++ string ++ "\ESC[0m"

dim string = "\ESC[2m" ++ string ++ "\ESC[0m"

underline string = "\ESC[4m" ++ string ++ "\ESC[0m"

blink string = "\ESC[5m" ++ string ++ "\ESC[0m"

reverse string = "\ESC[7m" ++ string ++ "\ESC[0m"

hidden string = "\ESC[8m" ++ string ++ "\ESC[0m"

black string = "\ESC[30m" ++ string ++ "\ESC[0m"

red string = "\ESC[31m" ++ string ++ "\ESC[0m"

green string = "\ESC[32m" ++ string ++ "\ESC[0m"

yellow string = "\ESC[33m" ++ string ++ "\ESC[0m"

blue string = "\ESC[34m" ++ string ++ "\ESC[0m"

magenta string = "\ESC[35m" ++ string ++ "\ESC[0m" --AKA purple

cyan string = "\ESC[36m" ++ string ++ "\ESC[0m" --AKA aqua

white string = "\ESC[37m" ++ string ++ "\ESC[0m"

white2 string = "\ESC[38m" ++ string ++ "\ESC[0m"

setTitle :: String -> IO ()
setTitle value = putStr $ "\ESC]0;" ++ value ++ "\007"