chatty-0.7.0.1: Some monad transformers and typeclasses for abstraction of global dependencies.

Safe HaskellSafe
LanguageHaskell2010

Text.Chatty.Channel.Printer

Description

Provides a printer class that offers several channels.

Synopsis

Documentation

class (ChPrinter m, Eq c) => ChChannelPrinter c m where Source #

Typeclass for all printers that offer several channels.

Minimal complete definition

cstart, cfin, cthis

Methods

cbracket :: c -> m a -> m a Source #

Run the function with the given channel.

cstart :: c -> m () Source #

Switch to the given channel

cfin :: c -> m () Source #

Return to the previous channel. The argument is bogus (just for type inference).

cprint :: c -> String -> m () Source #

Print the string to the given channel.

cthis :: m c Source #

Return the current channel.

Instances

(Eq c, ChPrinter m) => ChChannelPrinter c (JoinerT m) Source # 

Methods

cbracket :: c -> JoinerT m a -> JoinerT m a Source #

cstart :: c -> JoinerT m () Source #

cfin :: c -> JoinerT m () Source #

cprint :: c -> String -> JoinerT m () Source #

cthis :: JoinerT m c Source #

(Eq c, ChPrinter m) => ChChannelPrinter c (FilterT c m) Source # 

Methods

cbracket :: c -> FilterT c m a -> FilterT c m a Source #

cstart :: c -> FilterT c m () Source #

cfin :: c -> FilterT c m () Source #

cprint :: c -> String -> FilterT c m () Source #

cthis :: FilterT c m c Source #

(Eq c, Monad m) => ChChannelPrinter c (ArchiverT c m) Source # 

Methods

cbracket :: c -> ArchiverT c m a -> ArchiverT c m a Source #

cstart :: c -> ArchiverT c m () Source #

cfin :: c -> ArchiverT c m () Source #

cprint :: c -> String -> ArchiverT c m () Source #

cthis :: ArchiverT c m c Source #

newtype ArchiverT c m a Source #

Catches all output on multiple channels.

Constructors

Archiver 

Fields

Instances

(Eq c, Monad m) => ChChannelPrinter c (ArchiverT c m) Source # 

Methods

cbracket :: c -> ArchiverT c m a -> ArchiverT c m a Source #

cstart :: c -> ArchiverT c m () Source #

cfin :: c -> ArchiverT c m () Source #

cprint :: c -> String -> ArchiverT c m () Source #

cthis :: ArchiverT c m c Source #

MonadTrans (ArchiverT c) Source # 

Methods

lift :: Monad m => m a -> ArchiverT c m a #

Monad m => Monad (ArchiverT c m) Source # 

Methods

(>>=) :: ArchiverT c m a -> (a -> ArchiverT c m b) -> ArchiverT c m b #

(>>) :: ArchiverT c m a -> ArchiverT c m b -> ArchiverT c m b #

return :: a -> ArchiverT c m a #

fail :: String -> ArchiverT c m a #

Monad m => Functor (ArchiverT c m) Source # 

Methods

fmap :: (a -> b) -> ArchiverT c m a -> ArchiverT c m b #

(<$) :: a -> ArchiverT c m b -> ArchiverT c m a #

Monad m => Applicative (ArchiverT c m) Source # 

Methods

pure :: a -> ArchiverT c m a #

(<*>) :: ArchiverT c m (a -> b) -> ArchiverT c m a -> ArchiverT c m b #

(*>) :: ArchiverT c m a -> ArchiverT c m b -> ArchiverT c m b #

(<*) :: ArchiverT c m a -> ArchiverT c m b -> ArchiverT c m a #

MonadIO m => MonadIO (ArchiverT c m) Source # 

Methods

liftIO :: IO a -> ArchiverT c m a #

(Eq c, Monad m) => ChPrinter (ArchiverT c m) Source # 

runArchiverT :: (Eq c, Monad m) => c -> ArchiverT c m a -> m (a, [(c, Replayable)]) Source #

newtype FilterT c m a Source #

Forwards output only on a specific channel.

Constructors

Filter 

Fields

Instances

(Eq c, ChPrinter m) => ChChannelPrinter c (FilterT c m) Source # 

Methods

cbracket :: c -> FilterT c m a -> FilterT c m a Source #

cstart :: c -> FilterT c m () Source #

cfin :: c -> FilterT c m () Source #

cprint :: c -> String -> FilterT c m () Source #

cthis :: FilterT c m c Source #

MonadTrans (FilterT c) Source # 

Methods

lift :: Monad m => m a -> FilterT c m a #

Monad m => Monad (FilterT c m) Source # 

Methods

(>>=) :: FilterT c m a -> (a -> FilterT c m b) -> FilterT c m b #

(>>) :: FilterT c m a -> FilterT c m b -> FilterT c m b #

return :: a -> FilterT c m a #

fail :: String -> FilterT c m a #

Monad m => Functor (FilterT c m) Source # 

Methods

fmap :: (a -> b) -> FilterT c m a -> FilterT c m b #

(<$) :: a -> FilterT c m b -> FilterT c m a #

Monad m => Applicative (FilterT c m) Source # 

Methods

pure :: a -> FilterT c m a #

(<*>) :: FilterT c m (a -> b) -> FilterT c m a -> FilterT c m b #

(*>) :: FilterT c m a -> FilterT c m b -> FilterT c m b #

(<*) :: FilterT c m a -> FilterT c m b -> FilterT c m a #

MonadIO m => MonadIO (FilterT c m) Source # 

Methods

liftIO :: IO a -> FilterT c m a #

(Eq c, ChPrinter m) => ChPrinter (FilterT c m) Source # 

Methods

mprint :: String -> FilterT c m () Source #

mnoecho :: String -> FilterT c m () Source #

mflush :: FilterT c m () Source #

mnomask :: String -> FilterT c m () Source #

newtype JoinerT m a Source #

Joins all output regardless of its channel.

Constructors

Joiner 

Fields

Instances

MonadTrans JoinerT Source # 

Methods

lift :: Monad m => m a -> JoinerT m a #

(Eq c, ChPrinter m) => ChChannelPrinter c (JoinerT m) Source # 

Methods

cbracket :: c -> JoinerT m a -> JoinerT m a Source #

cstart :: c -> JoinerT m () Source #

cfin :: c -> JoinerT m () Source #

cprint :: c -> String -> JoinerT m () Source #

cthis :: JoinerT m c Source #

Monad m => Monad (JoinerT m) Source # 

Methods

(>>=) :: JoinerT m a -> (a -> JoinerT m b) -> JoinerT m b #

(>>) :: JoinerT m a -> JoinerT m b -> JoinerT m b #

return :: a -> JoinerT m a #

fail :: String -> JoinerT m a #

Functor m => Functor (JoinerT m) Source # 

Methods

fmap :: (a -> b) -> JoinerT m a -> JoinerT m b #

(<$) :: a -> JoinerT m b -> JoinerT m a #

(Functor m, Monad m) => Applicative (JoinerT m) Source # 

Methods

pure :: a -> JoinerT m a #

(<*>) :: JoinerT m (a -> b) -> JoinerT m a -> JoinerT m b #

(*>) :: JoinerT m a -> JoinerT m b -> JoinerT m b #

(<*) :: JoinerT m a -> JoinerT m b -> JoinerT m a #

MonadIO m => MonadIO (JoinerT m) Source # 

Methods

liftIO :: IO a -> JoinerT m a #

ChPrinter m => ChPrinter (JoinerT m) Source #