rio-prettyprint-0.1.6.0: src/RIO/PrettyPrint/Types.hs
{-# LANGUAGE NoImplicitPrelude #-}
{-|
For the most part, the data constructors of 'Style' do not clash with other
names. When they do, import the module qualified. For example:
> import qualified RIO.PrettyPrint.Types.PrettyPrint as PP
-}
module RIO.PrettyPrint.Types
( Style (..)
, Styles
, StyleSpec
) where
import Data.Array.IArray ( Array )
import Data.Ix ( Ix )
import Data.Text ( Text )
import RIO
import System.Console.ANSI.Types ( SGR )
-- | Type representing styles of output.
data Style
= Error
-- ^ Intended to be used sparingly, not to style entire long messages. For
-- example, to style the @Error:@ or @[error]@ label for an error message,
-- not the entire message.
| Warning
-- ^ Intended to be used sparingly, not to style entire long messages. For
-- example, to style the @Warning:@ or @[warn]@ label for a warning message,
-- not the entire message.
| Info
-- ^ Intended to be used sparingly, not to style entire long messages. For
-- example, to style the @[info]@ label for an info message, not the entire
-- message.
| Debug
-- ^ Intended to be used sparingly, not to style entire long messages. For
-- example, to style the @[debug]@ label for a debug message, not the entire
-- message.
| OtherLevel
-- ^ Intended to be used sparingly, not to style entire long messages. For
-- example, to style the @[...]@ label for an other log level message, not
-- the entire message.
| Good
-- ^ Style in a way to emphasize that it is a particularly good thing.
| Shell
-- ^ Style as a shell command, i.e. when suggesting something to the user
-- that should be typed in directly as written.
| File
-- ^ Style as a filename. See 'Dir' for directories.
| Url
-- ^ Style as a URL.
| Dir
-- ^ Style as a directory name. See 'File' for files.
| Recommendation
-- ^ Style used to highlight part of a recommended course of action.
| Current
-- ^ Style in a way that emphasizes that it is related to a current thing.
-- For example, to report the current package that is being processed when
-- outputting the name of it.
| Target
-- ^ Style used the highlight the target of a course of action.
| Module
-- ^ Style as a module name.
| PkgComponent
-- ^ Style used to highlight the named component of a package.
| Secondary
-- ^ Style for secondary content. For example, to style timestamps.
| Highlight
-- ^ Intended to be used sparingly, not to style entire long messages. For
-- example, to style the duration in a @Finished process in ... ms@ message.
deriving (Bounded, Enum, Eq, Ix, Ord, Show)
-- | The first style overrides the second.
instance Semigroup Style where
s <> _ = s
-- | A style specification, pairing its \'key\' with the corresponding list of
-- 'SGR' codes.
type StyleSpec = (Text, [SGR])
-- | Style specifications indexed by the style.
type Styles = Array Style StyleSpec