{-# 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) -- |A style of rio-prettyprint's output. data Style = Error -- Should be used sparingly, not to style entire long messages. -- For example, it's used to style the "Error:" or "[error]" label -- for an error message, not the entire message. | Warning -- Should be used sparingly, not to style entire long messages. -- For example, it's used to style the "Warning:" or "[warn]" -- label for a warning message, not the entire message. | Info -- Should be used sparingly, not to style entire long messages. -- For example, it's used to style the "[info]" label for an info -- message, not the entire message. | Debug -- Should be used sparingly, not to style entire long messages. -- For example, it's used to style the "[debug]" label for a debug -- message, not the entire message. | OtherLevel -- Should be used sparingly, not to style entire long -- messages. For example, it's used 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, could be used when talking about the current -- package we're processing when outputting the name of it. | Target -- TODO: figure out how to describe this | Module -- Style as a module name. | PkgComponent -- Style used to highlight the named component of a package. | Secondary -- Style for secondary content. For example, it's used to style -- timestamps. | Highlight -- Should be used sparingly, not to style entire long messages. -- For example, it's used 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