wybor-0.1.0: src/Ansi.hs
-- | Collection of utilities to make @wybor@ customization palatable
--
-- Those are mostly thin wrappers over things in "System.Console.ANSI" from @ansi-terminal@
module Ansi
( reset
, bold
, regular
, underlining
, swap
, unswap
, fgcolor
, bgcolor
, Ansi.Underlining(..)
, Ansi.ColorIntensity(..)
, Ansi.Color(..)
) where
import Data.Text (Text)
import qualified Data.Text as Text
import qualified System.Console.ANSI as Ansi
-- | Sets all attributes off
reset :: Text
reset = sgr Ansi.Reset
-- | Set bold font style
bold :: Text
bold = sgr (Ansi.SetConsoleIntensity Ansi.BoldIntensity)
-- | Set regular font style
regular :: Text
regular = sgr (Ansi.SetConsoleIntensity Ansi.NormalIntensity)
-- | Set underlining style
underlining :: Ansi.Underlining -> Text
underlining = sgr . Ansi.SetUnderlining
-- | Swap foreground and background colors
swap :: Text
swap = sgr (Ansi.SetSwapForegroundBackground True)
-- | Unswap foreground and background colors
unswap :: Text
unswap = sgr (Ansi.SetSwapForegroundBackground False)
-- | Set foreground color
fgcolor :: Ansi.ColorIntensity -> Ansi.Color -> Text
fgcolor i c = sgr (Ansi.SetColor Ansi.Foreground i c)
-- | Set background color
bgcolor :: Ansi.ColorIntensity -> Ansi.Color -> Text
bgcolor i c = sgr (Ansi.SetColor Ansi.Background i c)
sgr :: Ansi.SGR -> Text
sgr = Text.pack . Ansi.setSGRCode . return