Safe Haskell | None |
---|---|
Language | Haskell2010 |
Text.Colour
Contents
Description
Safe Coloured Text
This module is responsible for defining, building, and rendering coloured text.
The text to be coloured is Text
, but the rendered text, while technically still (probably) valid Utf8, will be a ByteString
builder.
Synopsis
- chunk :: Text -> Chunk
- data Chunk = Chunk {
- chunkText :: !Text
- chunkItalic :: !(Maybe Bool)
- chunkConsoleIntensity :: !(Maybe ConsoleIntensity)
- chunkUnderlining :: !(Maybe Underlining)
- chunkBlinking :: !(Maybe Blinking)
- chunkForeground :: !(Maybe Colour)
- chunkBackground :: !(Maybe Colour)
- fore :: Colour -> Chunk -> Chunk
- back :: Colour -> Chunk -> Chunk
- bold :: Chunk -> Chunk
- faint :: Chunk -> Chunk
- italic :: Chunk -> Chunk
- underline :: Chunk -> Chunk
- doubleUnderline :: Chunk -> Chunk
- noUnderline :: Chunk -> Chunk
- slowBlinking :: Chunk -> Chunk
- rapidBlinking :: Chunk -> Chunk
- noBlinking :: Chunk -> Chunk
- data Colour
- black :: Colour
- red :: Colour
- green :: Colour
- yellow :: Colour
- blue :: Colour
- magenta :: Colour
- cyan :: Colour
- white :: Colour
- brightBlack :: Colour
- brightRed :: Colour
- brightGreen :: Colour
- brightYellow :: Colour
- brightBlue :: Colour
- brightMagenta :: Colour
- brightCyan :: Colour
- brightWhite :: Colour
- color256 :: Word8 -> Colour
- colour256 :: Word8 -> Colour
- colorRGB :: Word8 -> Word8 -> Word8 -> Colour
- colourRGB :: Word8 -> Word8 -> Word8 -> Colour
- unlinesChunks :: [[Chunk]] -> [Chunk]
- unwordsChunks :: [[Chunk]] -> [Chunk]
- renderChunksUtf8BS :: Foldable f => TerminalCapabilities -> f Chunk -> ByteString
- renderChunkUtf8BS :: TerminalCapabilities -> Chunk -> ByteString
- renderChunksUtf8BSBuilder :: Foldable f => TerminalCapabilities -> f Chunk -> Builder
- renderChunkUtf8BSBuilder :: TerminalCapabilities -> Chunk -> Builder
- renderChunksText :: Foldable f => TerminalCapabilities -> f Chunk -> Text
- renderChunkText :: TerminalCapabilities -> Chunk -> Text
- renderChunksLazyText :: Foldable f => TerminalCapabilities -> f Chunk -> Text
- renderChunkLazyText :: TerminalCapabilities -> Chunk -> Text
- renderChunksBuilder :: Foldable f => TerminalCapabilities -> f Chunk -> Builder
- renderChunkBuilder :: TerminalCapabilities -> Chunk -> Builder
- data TerminalCapabilities
- putChunksUtf8With :: TerminalCapabilities -> [Chunk] -> IO ()
- putChunksLocaleWith :: TerminalCapabilities -> [Chunk] -> IO ()
- hPutChunksUtf8With :: TerminalCapabilities -> Handle -> [Chunk] -> IO ()
- hPutChunksLocaleWith :: TerminalCapabilities -> Handle -> [Chunk] -> IO ()
Building chunks
Constructors
Chunk | |
Fields
|
Instances
Styling
Setting colour
Setting non-colour attributes
doubleUnderline :: Chunk -> Chunk Source #
noUnderline :: Chunk -> Chunk Source #
slowBlinking :: Chunk -> Chunk Source #
rapidBlinking :: Chunk -> Chunk Source #
noBlinking :: Chunk -> Chunk Source #
Colours
Constructors
Colour8 !ColourIntensity !TerminalColour | |
Colour8Bit !Word8 | |
Colour24Bit !Word8 !Word8 !Word8 |
Instances
Generic Colour Source # | |||||
Defined in Text.Colour.Chunk Associated Types
| |||||
Show Colour Source # | |||||
Eq Colour Source # | |||||
Validity Colour Source # | |||||
Defined in Text.Colour.Chunk Methods validate :: Colour -> Validation # | |||||
type Rep Colour Source # | |||||
Defined in Text.Colour.Chunk type Rep Colour = D1 ('MetaData "Colour" "Text.Colour.Chunk" "safe-coloured-text-0.3.0.2-DDjoaGj2H9nCTABs3rdvi3" 'False) (C1 ('MetaCons "Colour8" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 ColourIntensity) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 TerminalColour)) :+: (C1 ('MetaCons "Colour8Bit" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Word8)) :+: C1 ('MetaCons "Colour24Bit" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Word8) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Word8) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Word8))))) |
8-colour
Dull
Bright
brightBlack :: Colour Source #
brightGreen :: Colour Source #
brightBlue :: Colour Source #
brightCyan :: Colour Source #
brightWhite :: Colour Source #
8-bit
colour256 :: Word8 -> Colour Source #
Bulid an 8-bit RGB Colour
This will not be rendered unless With8BitColours
is used.
24-bit
colourRGB :: Word8 -> Word8 -> Word8 -> Colour Source #
Bulid a 24-bit RGB Colour
This will not be rendered unless With24BitColours
is used.
Rendering
Composing chunks
unlinesChunks :: [[Chunk]] -> [Chunk] Source #
Render lines of chunks.
This puts newlines ("n") at the end of every list of chunks.
unwordsChunks :: [[Chunk]] -> [Chunk] Source #
Render lines of chunks.
This puts newlines (" ") inbetween the list of chunks.
Rendering chunks to strict bytestring in UTF8
renderChunksUtf8BS :: Foldable f => TerminalCapabilities -> f Chunk -> ByteString Source #
Render chunks directly to a UTF8-encoded Bytestring
.
renderChunkUtf8BS :: TerminalCapabilities -> Chunk -> ByteString Source #
Render a chunk directly to a UTF8-encoded Bytestring
.
Rendering chunks to lazy bytestring builders in UTF8
renderChunksUtf8BSBuilder :: Foldable f => TerminalCapabilities -> f Chunk -> Builder Source #
Render chunks to a UTF8-encoded ByteString
Builder
.
renderChunkUtf8BSBuilder :: TerminalCapabilities -> Chunk -> Builder Source #
Render a chunk directly to a UTF8-encoded Bytestring
Builder
.
Rendering chunks to strict Text
renderChunksText :: Foldable f => TerminalCapabilities -> f Chunk -> Text Source #
Render chunks directly to strict Text
.
renderChunkText :: TerminalCapabilities -> Chunk -> Text Source #
Render a chunk directly to strict Text
.
Rendering chunks to lazy text
renderChunksLazyText :: Foldable f => TerminalCapabilities -> f Chunk -> Text Source #
Render chunks directly to lazy Text
.
renderChunkLazyText :: TerminalCapabilities -> Chunk -> Text Source #
Render a chunk directly to strict Text
.
Rendering chunks to lazy text builder
renderChunksBuilder :: Foldable f => TerminalCapabilities -> f Chunk -> Builder Source #
IO
data TerminalCapabilities Source #
Constructors
WithoutColours | No colours |
With8Colours | Only 8 colours |
With8BitColours | Only 8-bit colours |
With24BitColours | All 24-bit colours |
Instances
Generic TerminalCapabilities Source # | |||||
Defined in Text.Colour.Capabilities Associated Types
Methods from :: TerminalCapabilities -> Rep TerminalCapabilities x # to :: Rep TerminalCapabilities x -> TerminalCapabilities # | |||||
Show TerminalCapabilities Source # | |||||
Defined in Text.Colour.Capabilities Methods showsPrec :: Int -> TerminalCapabilities -> ShowS # show :: TerminalCapabilities -> String # showList :: [TerminalCapabilities] -> ShowS # | |||||
Eq TerminalCapabilities Source # | |||||
Defined in Text.Colour.Capabilities Methods (==) :: TerminalCapabilities -> TerminalCapabilities -> Bool # (/=) :: TerminalCapabilities -> TerminalCapabilities -> Bool # | |||||
Ord TerminalCapabilities Source # | |||||
Defined in Text.Colour.Capabilities Methods compare :: TerminalCapabilities -> TerminalCapabilities -> Ordering # (<) :: TerminalCapabilities -> TerminalCapabilities -> Bool # (<=) :: TerminalCapabilities -> TerminalCapabilities -> Bool # (>) :: TerminalCapabilities -> TerminalCapabilities -> Bool # (>=) :: TerminalCapabilities -> TerminalCapabilities -> Bool # max :: TerminalCapabilities -> TerminalCapabilities -> TerminalCapabilities # min :: TerminalCapabilities -> TerminalCapabilities -> TerminalCapabilities # | |||||
type Rep TerminalCapabilities Source # | |||||
Defined in Text.Colour.Capabilities type Rep TerminalCapabilities = D1 ('MetaData "TerminalCapabilities" "Text.Colour.Capabilities" "safe-coloured-text-0.3.0.2-DDjoaGj2H9nCTABs3rdvi3" 'False) ((C1 ('MetaCons "WithoutColours" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "With8Colours" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "With8BitColours" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "With24BitColours" 'PrefixI 'False) (U1 :: Type -> Type))) |
Outputting chunks directly
putChunksUtf8With :: TerminalCapabilities -> [Chunk] -> IO () Source #
Print a list of chunks to stdout with given TerminalCapabilities
.
putChunksLocaleWith :: TerminalCapabilities -> [Chunk] -> IO () Source #
Print a list of chunks to stdout with given TerminalCapabilities
in an encoding according to the system's locale.
hPutChunksUtf8With :: TerminalCapabilities -> Handle -> [Chunk] -> IO () Source #
Print a list of chunks to the given Handle
with given TerminalCapabilities
.
hPutChunksLocaleWith :: TerminalCapabilities -> Handle -> [Chunk] -> IO () Source #
Print a list of chunks to the given Handle
with given TerminalCapabilities
in an encoding according to the system's locale.