colorful-monoids-0.1.0.1: Styled console text output using ANSI escape sequences.

CopyrightDaniel Mendler (c) 2017
LicenseMIT (see the file LICENSE)
Maintainermail@daniel-mendler.de
Stabilityexperimental
Portabilityportable
Safe HaskellSafe
LanguageHaskell2010

Data.Monoid.Colorful.Flat

Contents

Description

This module provides the flat Colored type, which is used internally for rendering the nested Colored but is also useful on its own. The API resembles the API of Colorful.

Synopsis

Colored datatypes

data Colored a Source #

Constructors

Value a 
Style !Style 
Unstyle !Style 
Fg !Color 
Bg !Color 
Push 
Pop 
Reset 

Instances

Functor Colored Source # 

Methods

fmap :: (a -> b) -> Colored a -> Colored b #

(<$) :: a -> Colored b -> Colored a #

Foldable Colored Source # 

Methods

fold :: Monoid m => Colored m -> m #

foldMap :: Monoid m => (a -> m) -> Colored a -> m #

foldr :: (a -> b -> b) -> b -> Colored a -> b #

foldr' :: (a -> b -> b) -> b -> Colored a -> b #

foldl :: (b -> a -> b) -> b -> Colored a -> b #

foldl' :: (b -> a -> b) -> b -> Colored a -> b #

foldr1 :: (a -> a -> a) -> Colored a -> a #

foldl1 :: (a -> a -> a) -> Colored a -> a #

toList :: Colored a -> [a] #

null :: Colored a -> Bool #

length :: Colored a -> Int #

elem :: Eq a => a -> Colored a -> Bool #

maximum :: Ord a => Colored a -> a #

minimum :: Ord a => Colored a -> a #

sum :: Num a => Colored a -> a #

product :: Num a => Colored a -> a #

Traversable Colored Source # 

Methods

traverse :: Applicative f => (a -> f b) -> Colored a -> f (Colored b) #

sequenceA :: Applicative f => Colored (f a) -> f (Colored a) #

mapM :: Monad m => (a -> m b) -> Colored a -> m (Colored b) #

sequence :: Monad m => Colored (m a) -> m (Colored a) #

Generic1 Colored Source # 

Associated Types

type Rep1 (Colored :: * -> *) :: * -> * #

Methods

from1 :: Colored a -> Rep1 Colored a #

to1 :: Rep1 Colored a -> Colored a #

Eq a => Eq (Colored a) Source # 

Methods

(==) :: Colored a -> Colored a -> Bool #

(/=) :: Colored a -> Colored a -> Bool #

Ord a => Ord (Colored a) Source # 

Methods

compare :: Colored a -> Colored a -> Ordering #

(<) :: Colored a -> Colored a -> Bool #

(<=) :: Colored a -> Colored a -> Bool #

(>) :: Colored a -> Colored a -> Bool #

(>=) :: Colored a -> Colored a -> Bool #

max :: Colored a -> Colored a -> Colored a #

min :: Colored a -> Colored a -> Colored a #

Show a => Show (Colored a) Source # 

Methods

showsPrec :: Int -> Colored a -> ShowS #

show :: Colored a -> String #

showList :: [Colored a] -> ShowS #

Generic (Colored a) Source # 

Associated Types

type Rep (Colored a) :: * -> * #

Methods

from :: Colored a -> Rep (Colored a) x #

to :: Rep (Colored a) x -> Colored a #

type Rep1 Colored Source # 
type Rep (Colored a) Source # 

data Style Source #

Rendering style

Constructors

Bold

Bold font

Italic

Italic font

Under

Underlined text

Invert

Invert foreground and background color

Blink

Blinking

Instances

Bounded Style Source # 
Enum Style Source # 
Eq Style Source # 

Methods

(==) :: Style -> Style -> Bool #

(/=) :: Style -> Style -> Bool #

Ord Style Source # 

Methods

compare :: Style -> Style -> Ordering #

(<) :: Style -> Style -> Bool #

(<=) :: Style -> Style -> Bool #

(>) :: Style -> Style -> Bool #

(>=) :: Style -> Style -> Bool #

max :: Style -> Style -> Style #

min :: Style -> Style -> Style #

Read Style Source # 
Show Style Source # 

Methods

showsPrec :: Int -> Style -> ShowS #

show :: Style -> String #

showList :: [Style] -> ShowS #

Generic Style Source # 

Associated Types

type Rep Style :: * -> * #

Methods

from :: Style -> Rep Style x #

to :: Rep Style x -> Style #

type Rep Style Source # 
type Rep Style = D1 (MetaData "Style" "Data.Monoid.Colorful.Color" "colorful-monoids-0.1.0.1-EVsOiaBzXYO2i72ZWt9d7E" False) ((:+:) ((:+:) (C1 (MetaCons "Bold" PrefixI False) U1) (C1 (MetaCons "Italic" PrefixI False) U1)) ((:+:) (C1 (MetaCons "Under" PrefixI False) U1) ((:+:) (C1 (MetaCons "Invert" PrefixI False) U1) (C1 (MetaCons "Blink" PrefixI False) U1))))

data Color Source #

Named colors, 256 and RGB colors for more capable terminals.

Constructors

DefaultColor

Default terminal color (terminal specific)

Black 
Red 
Green 
Yellow 
Blue 
Magenta 
Cyan 
White 
DullBlack 
DullRed 
DullGreen 
DullYellow 
DullBlue 
DullMagenta 
DullCyan 
DullWhite 
Color256 !Word8

Color from 256 color scheme. Color is automatically reduced to 8 colors for less capable terminals.

RGB !Word8 !Word8 !Word8

True color. Color is automatically reduced to 256 or 8 colors for less capable terminals.

Instances

Eq Color Source # 

Methods

(==) :: Color -> Color -> Bool #

(/=) :: Color -> Color -> Bool #

Ord Color Source # 

Methods

compare :: Color -> Color -> Ordering #

(<) :: Color -> Color -> Bool #

(<=) :: Color -> Color -> Bool #

(>) :: Color -> Color -> Bool #

(>=) :: Color -> Color -> Bool #

max :: Color -> Color -> Color #

min :: Color -> Color -> Color #

Read Color Source # 
Show Color Source # 

Methods

showsPrec :: Int -> Color -> ShowS #

show :: Color -> String #

showList :: [Color] -> ShowS #

Generic Color Source # 

Associated Types

type Rep Color :: * -> * #

Methods

from :: Color -> Rep Color x #

to :: Rep Color x -> Color #

type Rep Color Source # 
type Rep Color = D1 (MetaData "Color" "Data.Monoid.Colorful.Color" "colorful-monoids-0.1.0.1-EVsOiaBzXYO2i72ZWt9d7E" False) ((:+:) ((:+:) ((:+:) ((:+:) (C1 (MetaCons "DefaultColor" PrefixI False) U1) (C1 (MetaCons "Black" PrefixI False) U1)) ((:+:) (C1 (MetaCons "Red" PrefixI False) U1) (C1 (MetaCons "Green" PrefixI False) U1))) ((:+:) ((:+:) (C1 (MetaCons "Yellow" PrefixI False) U1) (C1 (MetaCons "Blue" PrefixI False) U1)) ((:+:) (C1 (MetaCons "Magenta" PrefixI False) U1) ((:+:) (C1 (MetaCons "Cyan" PrefixI False) U1) (C1 (MetaCons "White" PrefixI False) U1))))) ((:+:) ((:+:) ((:+:) (C1 (MetaCons "DullBlack" PrefixI False) U1) (C1 (MetaCons "DullRed" PrefixI False) U1)) ((:+:) (C1 (MetaCons "DullGreen" PrefixI False) U1) ((:+:) (C1 (MetaCons "DullYellow" PrefixI False) U1) (C1 (MetaCons "DullBlue" PrefixI False) U1)))) ((:+:) ((:+:) (C1 (MetaCons "DullMagenta" PrefixI False) U1) (C1 (MetaCons "DullCyan" PrefixI False) U1)) ((:+:) (C1 (MetaCons "DullWhite" PrefixI False) U1) ((:+:) (C1 (MetaCons "Color256" PrefixI False) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 Word8))) (C1 (MetaCons "RGB" PrefixI False) ((:*:) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 Word8)) ((:*:) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 Word8)) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 Word8))))))))))

Terminal type

data Term Source #

Terminal type. For less capable terminals the color depth is automatically reduced.

Constructors

TermDumb

Dumb terminal - no color output

Term8

8 colors supported

Term256

256 colors supported

TermRGB

True colors supported

TermWin

Windows terminal. Will use emulation (Not yet implemented).

Instances

Bounded Term Source # 
Enum Term Source # 

Methods

succ :: Term -> Term #

pred :: Term -> Term #

toEnum :: Int -> Term #

fromEnum :: Term -> Int #

enumFrom :: Term -> [Term] #

enumFromThen :: Term -> Term -> [Term] #

enumFromTo :: Term -> Term -> [Term] #

enumFromThenTo :: Term -> Term -> Term -> [Term] #

Eq Term Source # 

Methods

(==) :: Term -> Term -> Bool #

(/=) :: Term -> Term -> Bool #

Ord Term Source # 

Methods

compare :: Term -> Term -> Ordering #

(<) :: Term -> Term -> Bool #

(<=) :: Term -> Term -> Bool #

(>) :: Term -> Term -> Bool #

(>=) :: Term -> Term -> Bool #

max :: Term -> Term -> Term #

min :: Term -> Term -> Term #

Read Term Source # 
Show Term Source # 

Methods

showsPrec :: Int -> Term -> ShowS #

show :: Term -> String #

showList :: [Term] -> ShowS #

Generic Term Source # 

Associated Types

type Rep Term :: * -> * #

Methods

from :: Term -> Rep Term x #

to :: Rep Term x -> Term #

type Rep Term Source # 
type Rep Term = D1 (MetaData "Term" "Data.Monoid.Colorful.Term" "colorful-monoids-0.1.0.1-EVsOiaBzXYO2i72ZWt9d7E" False) ((:+:) ((:+:) (C1 (MetaCons "TermDumb" PrefixI False) U1) (C1 (MetaCons "Term8" PrefixI False) U1)) ((:+:) (C1 (MetaCons "Term256" PrefixI False) U1) ((:+:) (C1 (MetaCons "TermRGB" PrefixI False) U1) (C1 (MetaCons "TermWin" PrefixI False) U1))))

hGetTerm :: Handle -> IO Term Source #

The action (hGetTerm handle) determines the terminal type of the file handle.

The terminal type is determined by checking if the file handle points to a device and by looking at the $TERM environment variable.

Colorful printing to file handle

hPrintColored :: (Handle -> a -> IO ()) -> Handle -> Term -> [Colored a] -> IO () Source #

printColored :: (a -> IO ()) -> Term -> [Colored a] -> IO () Source #

hPrintColoredIO :: Handle -> Term -> [Colored (IO ())] -> IO () Source #

printColoredIO :: Term -> [Colored (IO ())] -> IO () Source #

Show with ANSI escape sequences

showColored :: Monoid o => (a -> o) -> (SGRCode -> o) -> Term -> [Colored a] -> o Source #

showColoredA :: (Applicative f, Monoid o) => (a -> f o) -> (SGRCode -> f o) -> Term -> [Colored a] -> f o Source #

Reexport from Data.Semigroup

(<>) :: Semigroup a => a -> a -> a #

An associative operation.

(a <> b) <> c = a <> (b <> c)

If a is also a Monoid we further require

(<>) = mappend