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

Safe HaskellSafe
LanguageHaskell2010

Text.Chatty.Printer

Description

Provides a typeclass for all monads that may print text.

Synopsis

Documentation

class Monad m => ChPrinter m where Source #

A typeclass for all monads that may output strings.

Minimal complete definition

mprint

Methods

mprint :: String -> m () Source #

Just print it!

mnoecho :: String -> m () Source #

Print it, except you are IO.

mflush :: m () Source #

Flush the buffer.

mnomask :: String -> m () Source #

Alternative to mprint that does not mask any characters (depends on the carrier).

Instances

ChPrinter IO Source # 

Methods

mprint :: String -> IO () Source #

mnoecho :: String -> IO () Source #

mflush :: IO () Source #

mnomask :: String -> IO () Source #

Monad m => ChPrinter (RecorderT m) Source # 
MonadIO m => ChPrinter (OutRedirT m) Source # 
Monad m => ChPrinter (DeafT m) Source # 

Methods

mprint :: String -> DeafT m () Source #

mnoecho :: String -> DeafT m () Source #

mflush :: DeafT m () Source #

mnomask :: String -> DeafT m () Source #

ChPrinter m => ChPrinter (AnsiPrinterT m) Source # 
ChPrinter m => ChPrinter (HtmlPrinterT m) Source # 
ChPrinter m => ChPrinter (JoinerT m) Source # 
ChAtoms m => ChPrinter (FilePrinterT m) Source # 
(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 #

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

newtype DeafT m a Source #

DeafT discards all output (much like >/dev/null in the shell)

Constructors

Deaf 

Fields

Instances

MonadTrans DeafT Source # 

Methods

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

RedirectionTarget DiscardO DeafT a a Source # 

Methods

(.>.) :: (Functor m, MonadIO m, ChPrinter (DeafT m)) => DeafT m a -> DiscardO -> m a Source #

(.>>.) :: (Functor m, MonadIO m, ChPrinter (DeafT m)) => DeafT m a -> DiscardO -> m a Source #

Monad m => Monad (DeafT m) Source # 

Methods

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

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

return :: a -> DeafT m a #

fail :: String -> DeafT m a #

Functor m => Functor (DeafT m) Source # 

Methods

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

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

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

Methods

pure :: a -> DeafT m a #

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

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

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

MonadIO m => MonadIO (DeafT m) Source # 

Methods

liftIO :: IO a -> DeafT m a #

Monad m => ChPrinter (DeafT m) Source # 

Methods

mprint :: String -> DeafT m () Source #

mnoecho :: String -> DeafT m () Source #

mflush :: DeafT m () Source #

mnomask :: String -> DeafT m () Source #

newtype OutRedirT m a Source #

Redirects all output to a given handle (much like >filename in the shell)

Constructors

OutRedir 

Fields

Instances

MonadTrans OutRedirT Source # 

Methods

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

RedirectionTarget Handle OutRedirT a a Source # 

Methods

(.>.) :: (Functor m, MonadIO m, ChPrinter (OutRedirT m)) => OutRedirT m a -> Handle -> m a Source #

(.>>.) :: (Functor m, MonadIO m, ChPrinter (OutRedirT m)) => OutRedirT m a -> Handle -> m a Source #

RedirectionTarget FilePath OutRedirT a a Source # 

Methods

(.>.) :: (Functor m, MonadIO m, ChPrinter (OutRedirT m)) => OutRedirT m a -> FilePath -> m a Source #

(.>>.) :: (Functor m, MonadIO m, ChPrinter (OutRedirT m)) => OutRedirT m a -> FilePath -> m a Source #

Monad m => Monad (OutRedirT m) Source # 

Methods

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

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

return :: a -> OutRedirT m a #

fail :: String -> OutRedirT m a #

Monad m => Functor (OutRedirT m) Source # 

Methods

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

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

Monad m => Applicative (OutRedirT m) Source # 

Methods

pure :: a -> OutRedirT m a #

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

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

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

MonadIO m => MonadIO (OutRedirT m) Source # 

Methods

liftIO :: IO a -> OutRedirT m a #

MonadIO m => ChPrinter (OutRedirT m) Source # 

type OutRedir = OutRedirT IO Source #

OutRedirT on a blank IO monad

newtype RecorderT m a Source #

Catches all output (much like VAR=$(...) in the shell)

Constructors

Recorder 

Fields

Instances

MonadTrans RecorderT Source # 

Methods

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

RedirectionTarget RecordO RecorderT a (a, Replayable) Source # 

Methods

(.>.) :: (Functor m, MonadIO m, ChPrinter (RecorderT m)) => RecorderT m a -> RecordO -> m (a, Replayable) Source #

(.>>.) :: (Functor m, MonadIO m, ChPrinter (RecorderT m)) => RecorderT m a -> RecordO -> m (a, Replayable) Source #

Monad m => Monad (RecorderT m) Source # 

Methods

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

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

return :: a -> RecorderT m a #

fail :: String -> RecorderT m a #

Monad m => Functor (RecorderT m) Source # 

Methods

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

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

Monad m => Applicative (RecorderT m) Source # 

Methods

pure :: a -> RecorderT m a #

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

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

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

MonadIO m => MonadIO (RecorderT m) Source # 

Methods

liftIO :: IO a -> RecorderT m a #

Monad m => ChPrinter (RecorderT m) Source # 

newtype Replayable Source #

The recorder state. Use this together with replay, replayM or replay_.

Constructors

Replayable [String] 

replay :: Replayable -> String Source #

Replay a recorder state in a pure context.

runRecorder :: Recorder a -> (a, Replayable) Source #

Run Recorder and also return its state.

runRecorderT :: (Functor m, Monad m) => RecorderT m a -> m (a, Replayable) Source #

Run RecorderT and also return its state.

mprintLn :: ChPrinter m => String -> m () Source #

Line-terminating alternative to mprint

mnomaskLn :: ChPrinter m => String -> m () Source #

Line-terminating alternative to mnomask

data DiscardO Source #

Redirection target that discards input.

Constructors

DiscardO 

Instances

RedirectionTarget DiscardO DeafT a a Source # 

Methods

(.>.) :: (Functor m, MonadIO m, ChPrinter (DeafT m)) => DeafT m a -> DiscardO -> m a Source #

(.>>.) :: (Functor m, MonadIO m, ChPrinter (DeafT m)) => DeafT m a -> DiscardO -> m a Source #

data RecordO Source #

Redirection target that records input.

Constructors

RecordO 

class RedirectionTarget t mt a r | t -> mt, t a -> r where Source #

Class for all redirection targets.

Minimal complete definition

(.>.)

Methods

(.>.) :: (Functor m, MonadIO m, ChPrinter (mt m)) => mt m a -> t -> m r Source #

Overwriting redirection.

(.>>.) :: (Functor m, MonadIO m, ChPrinter (mt m)) => mt m a -> t -> m r Source #

Appending redirection.