    -- | Basic color helpers for prettifying console output.

    {-# LANGUAGE OverloadedStrings #-}

    module Hledger.Utils.Color
    (
      color,
      bgColor,
      Color(..),
      ColorIntensity(..)
    )
    where

    import System.Console.ANSI

    -- | Wrap a string in ANSI codes to set and reset foreground colour.
    color :: ColorIntensity -> Color -> String -> String
    color :: ColorIntensity -> Color -> String -> String
    color int :: ColorIntensity
    int col :: Color
    col s :: String
    s = [SGR] -> String
    setSGRCode [ConsoleLayer -> ColorIntensity -> Color -> SGR
    SetColor ConsoleLayer
    Foreground ColorIntensity
    int Color
    col] String -> String -> String
    forall a. [a] -> [a] -> [a]
    ++ String
    s String -> String -> String
    forall a. [a] -> [a] -> [a]
    ++ [SGR] -> String
    setSGRCode []

    -- | Wrap a string in ANSI codes to set and reset background colour.
    bgColor :: ColorIntensity -> Color -> String -> String
    bgColor :: ColorIntensity -> Color -> String -> String
    bgColor int :: ColorIntensity
    int col :: Color
    col s :: String
    s = [SGR] -> String
    setSGRCode [ConsoleLayer -> ColorIntensity -> Color -> SGR
    SetColor ConsoleLayer
    Background ColorIntensity
    int Color
    col] String -> String -> String
    forall a. [a] -> [a] -> [a]
    ++ String
    s String -> String -> String
    forall a. [a] -> [a] -> [a]
    ++ [SGR] -> String
    setSGRCode []