rainbow-0.22.0.0: tests/colorTest.hs
{-# LANGUAGE OverloadedStrings #-}
module Main where
import Rainbow
import qualified Data.Text as X
import qualified Data.ByteString as BS
colors8 :: [(Text, Color8)]
colors8 =
[ ("(no color)", noColor8)
, ("black", black8)
, ("red", red8)
, ("green", green8)
, ("yellow", yellow8)
, ("blue", blue8)
, ("magenta", magenta8)
, ("cyan", cyan8)
, ("white", white8)
]
colors256 :: [(Text, Color256)]
colors256
= ("(no color)", Color256 Nothing) : map mkColor [minBound..maxBound]
where
mkColor w = (X.pack . show $ w, Color256 . Just $ w)
colorChunks8ByForeground :: [Chunk]
colorChunks8ByForeground = do
(fgColorName, fgColor) <- colors8
(bgColorName, bgColor) <- colors8
let lbl = "foreground " <> fgColorName <> " background " <> bgColorName
return $ chunkFromText lbl <> fore fgColor <> back bgColor <> "\n"
colorChunks8ByBackground :: [Chunk]
colorChunks8ByBackground = do
(bgColorName, bgColor) <- colors8
(fgColorName, fgColor) <- colors8
let lbl = "background " <> bgColorName <> " foreground " <> fgColorName
return $ chunkFromText lbl <> fore fgColor <> back bgColor <> "\n"
colorChunks256ByForeground :: [Chunk]
colorChunks256ByForeground = do
(fgColorName, fgColor) <- colors256
(bgColorName, bgColor) <- colors256
let lbl = "foreground " <> fgColorName <> " background " <> bgColorName
return $ chunkFromText lbl <> fore fgColor <> back bgColor <> "\n"
colorChunks256ByBackground :: [Chunk]
colorChunks256ByBackground = do
(bgColorName, bgColor) <- colors256
(fgColorName, fgColor) <- colors256
let lbl = "background " <> bgColorName <> " foreground " <> fgColorName
return $ chunkFromText lbl <> fore fgColor <> back bgColor <> "\n"
sep :: String -> IO ()
sep s = do
putStrLn ""
putStrLn ""
putStrLn $ replicate 40 '='
putStrLn s
main :: IO ()
main = do
sep "8 Colors - sorted by foreground color"
mapM_ BS.putStr . chunksToByteStrings toByteStringsColors8
$ colorChunks8ByForeground
sep "8 Colors - sorted by background color"
mapM_ BS.putStr . chunksToByteStrings toByteStringsColors8
$ colorChunks8ByBackground
sep "256 Colors - sorted by foreground color"
mapM_ BS.putStr . chunksToByteStrings toByteStringsColors256
$ colorChunks256ByForeground
sep "256 Colors - sorted by background color"
mapM_ BS.putStr . chunksToByteStrings toByteStringsColors256
$ colorChunks256ByBackground