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

Safe HaskellSafe
LanguageHaskell2010

Text.Chatty.Scanner

Description

Provides a typeclass for all monads that may scan text.

Synopsis

Documentation

class Monad m => ChScanner m where Source #

A typeclass for all monads that may read input.

Minimal complete definition

mscan1, mscanL, mscannable, mready

Methods

mscan1 :: m Char Source #

Read one single character

mscanL :: m String Source #

Lazily read all the input.

mscannable :: m Bool Source #

Input readable? (not EOF)

mscanh :: m (Maybe Handle) Source #

Return FD handle, if available

mready :: m Bool Source #

Input available yet?

Instances

ChScanner IO Source # 
MonadIO m => ChScanner (InRedirT m) Source # 
Monad m => ChScanner (QuietT m) Source # 
Monad m => ChScanner (HereStringT m) Source # 
ChScanner m => ChScanner (ScannerBufferT m) Source # 
ChAtoms m => ChScanner (FileScannerT m) Source # 
Monad m => ChScanner (StateT String m) Source # 

newtype HereStringT m a Source #

HereStringT holds a given string and uses it as input for the function (much like here-strings in the shell)

Constructors

HereString 

Fields

Instances

MonadTrans HereStringT Source # 

Methods

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

RedirectionHeredoc String HereStringT a a Source # 

Methods

(.<<.) :: (Functor m, ChScanner (HereStringT m)) => HereStringT m a -> String -> m a Source #

Monad m => Monad (HereStringT m) Source # 

Methods

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

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

return :: a -> HereStringT m a #

fail :: String -> HereStringT m a #

Monad m => Functor (HereStringT m) Source # 

Methods

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

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

Monad m => Applicative (HereStringT m) Source # 

Methods

pure :: a -> HereStringT m a #

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

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

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

MonadIO m => MonadIO (HereStringT m) Source # 

Methods

liftIO :: IO a -> HereStringT m a #

ChFinalizer m => ChFinalizer (HereStringT m) Source # 
Monad m => ChScanner (HereStringT m) Source # 
Monad m => ChBufferedScanner (HereStringT m) Source # 

newtype QuietT m a Source #

QuietT does not convey any input (much like <devnull in the shell)

Constructors

Quiet 

Fields

Instances

MonadTrans QuietT Source # 

Methods

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

RedirectionSource EmptyI QuietT a a Source # 

Methods

(.<.) :: (ChFinalizer m, Functor m, MonadIO m, ChScanner (QuietT m)) => QuietT m a -> EmptyI -> m a Source #

Monad m => Monad (QuietT m) Source # 

Methods

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

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

return :: a -> QuietT m a #

fail :: String -> QuietT m a #

Functor m => Functor (QuietT m) Source # 

Methods

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

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

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

Methods

pure :: a -> QuietT m a #

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

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

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

Monad m => ChScanner (QuietT m) Source # 

newtype InRedirT m a Source #

InRedirT redirects all input to a given handle (much like <filename in the shell)

Constructors

InRedir 

Fields

Instances

MonadTrans InRedirT Source # 

Methods

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

RedirectionSource Handle InRedirT a a Source # 

Methods

(.<.) :: (ChFinalizer m, Functor m, MonadIO m, ChScanner (InRedirT m)) => InRedirT m a -> Handle -> m a Source #

RedirectionSource FilePath InRedirT a a Source # 

Methods

(.<.) :: (ChFinalizer m, Functor m, MonadIO m, ChScanner (InRedirT m)) => InRedirT m a -> FilePath -> m a Source #

Monad m => Monad (InRedirT m) Source # 

Methods

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

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

return :: a -> InRedirT m a #

fail :: String -> InRedirT m a #

Monad m => Functor (InRedirT m) Source # 

Methods

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

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

Monad m => Applicative (InRedirT m) Source # 

Methods

pure :: a -> InRedirT m a #

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

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

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

MonadIO m => MonadIO (InRedirT m) Source # 

Methods

liftIO :: IO a -> InRedirT m a #

ChFinalizer m => ChFinalizer (InRedirT m) Source # 

Methods

mqfh :: Handle -> InRedirT m () Source #

mqfhs :: [Handle] -> InRedirT m () Source #

mfin :: InRedirT m () Source #

MonadIO m => ChScanner (InRedirT m) Source # 

type InRedir = InRedirT (HandleCloserT IO) Source #

InRedirT on an IO monad

runInRedir :: InRedir a -> Handle -> IO a Source #

Run InRedir with handle

runInRedirFT :: (Functor m, MonadIO m, ChFinalizer m) => InRedirT m a -> FilePath -> m a Source #

Run InRedirT with a filename

runInRedirF :: InRedir a -> FilePath -> IO a Source #

Run InRedir with a filename

mscanLn :: ChScanner m => m String Source #

Line-scanning alternative to mscan1/L

mscanN :: ChScanner m => Int -> m String Source #

Scan a fixed number of chars

data EmptyI Source #

Redirection source that does not provide any output

Constructors

EmptyI 

Instances

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

Class for all primitive redirection sources.

Minimal complete definition

(.<.)

Methods

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

Redirection

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

Class for all Here-Documents

Minimal complete definition

(.<<.)

Methods

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

Redirection