{-# LANGUAGE ExtendedDefaultRules, NoMonomorphismRestriction #-}
import Data.Monoid ((<>))
import Text.EscapeArtist
import Data.List (intersperse)
-- import Text.Regex
main = do
putStrLn "Foreground Colors"
putStrLn "================="
putEscLn $ BgWhite $ FgBlack "Foreground should be black"
putEscLn $ BgWhite $ FgRed "Foreground should be red"
putEscLn $ BgWhite $ FgGreen "Foreground should be green"
putEscLn $ BgWhite $ FgYellow "Foreground should be yellow"
putEscLn $ BgWhite $ FgBlue "Foreground should be blue"
putEscLn $ BgWhite $ FgMagenta "Foreground should be magenta"
putEscLn $ BgWhite $ FgCyan "Foreground should be cyan"
putEscLn $ BgBlack $ FgWhite "Foreground should be white"
putStrLn ""
putStrLn "Background Colors"
putStrLn "================="
putEscLn $ BgBlack $ FgWhite "Background should be black"
putEscLn $ BgRed $ FgBlack "Background should be red"
putEscLn $ BgGreen $ FgBlack "Background should be green"
putEscLn $ BgYellow $ FgBlack "Background should be yellow"
putEscLn $ BgBlue $ FgBlack "Background should be blue"
putEscLn $ BgMagenta $ FgBlack "Background should be magenta"
putEscLn $ BgCyan $ FgBlack "Background should be cyan"
putEscLn $ BgWhite $ FgBlack "Background should be white"
putStrLn ""
putStrLn "FgDefault Colors"
putStrLn "=============="
putEscLn $ FgRed "-->" <> FgDefault "Foreground should be the default of the terminal" <> FgRed "<--"
putEscLn $ (BgBlue $ FgWhite "-->") <> BgDefault "Background should be the default of the terminal" <> (BgBlue $ FgWhite "<--")
putStrLn ""
putStrLn "Inherit"
putStrLn "========="
putEscLn $ Underline $ BgWhite $ FgBlue $ ((UnderlineOff $ BgBlack $ FgWhite "-->") <> Inherit "This should be underlined, white background and blue foreground" <> (UnderlineOff $ BgBlack $ FgWhite "<---"))
putStrLn ""
putStrLn "Default"
putStrLn "========="
putEscLn $ Underline $ BgWhite $ FgBlue $ (Inherit "-->" <> Default "This should not have any attributes except for those from the terminal" <> Inherit "<---")
putStrLn ""
putStrLn "Blink and Blink Off"
putStrLn "====================="
putEscLn $ FgRed "This should not be blinking" <> Default " " <> Blink ^$ FgRed "This should be blinking"
putEscLn $ Blink $ FgBlue $ BlinkOff "This should be not blinking from blink off" <> Default " " <> Inherit "This should be blinking"
putStrLn ""
putStrLn "Bright and Bright Off"
putStrLn "====================="
putEscLn $ FgRed "This should be dim" <> Inherit " " <> Bright ^$ FgRed "This should be bright"
putEscLn $ Bright $ FgBlue $ BrightOff "This should be dim from bright off" <> Inherit " This should be bright"
putStrLn ""
putStrLn "Underline and Underline Off"
putStrLn "==========================="
putEscLn $ FgRed "This should not be underlined" <> Inherit " " <> Underline ^$ FgRed "This should be underlined"
putEscLn $ Underline $ FgBlue $ UnderlineOff "This should not be underlined from underline off" <> Default " " <> Inherit "This should be underlined"
putStrLn ""
putStrLn "Inverse and Inverse Off"
putStrLn "==========================="
putEscLn $ FgRed "This should be inverse" <> Default " " <> Inverse ^$ FgRed "This should be inverse"
putEscLn $ Inverse $ FgBlue $ InverseOff "This should not be inverse from inverse off" <> Default " " <> Inherit "This should be inverse"