enumerator-0.4.13.1: Reliable, high-performance processing with left-fold enumeratorsSource codeContentsIndex
Data.Enumerator.Text
Portabilityportable
Maintainerjmillikin@gmail.com
Contents
IO
List analogues
Folds
Maps
Accumulating maps
Infinite streams
Bounded streams
Filters
Consumers
Unsorted
Text codecs
Description

Character-oriented alternatives to Data.Enumerator.List. Note that the enumeratees in this module must unpack their inputs to work properly. If you do not need to handle leftover input on a char-by-char basis, the chunk-oriented versions will be much faster.

This module is intended to be imported qualified:

 import qualified Data.Enumerator.Text as ET

Since: 0.2

Synopsis
enumHandle :: MonadIO m => Handle -> Enumerator Text m b
enumFile :: FilePath -> Enumerator Text IO b
iterHandle :: MonadIO m => Handle -> Iteratee Text m ()
fold :: Monad m => (b -> Char -> b) -> b -> Iteratee Text m b
foldM :: Monad m => (b -> Char -> m b) -> b -> Iteratee Text m b
map :: Monad m => (Char -> Char) -> Enumeratee Text Text m b
mapM :: Monad m => (Char -> m Char) -> Enumeratee Text Text m b
mapM_ :: Monad m => (Char -> m ()) -> Iteratee Text m ()
concatMap :: Monad m => (Char -> Text) -> Enumeratee Text Text m b
concatMapM :: Monad m => (Char -> m Text) -> Enumeratee Text Text m b
mapAccum :: Monad m => (s -> Char -> (s, Char)) -> s -> Enumeratee Text Text m b
mapAccumM :: Monad m => (s -> Char -> m (s, Char)) -> s -> Enumeratee Text Text m b
concatMapAccum :: Monad m => (s -> Char -> (s, Text)) -> s -> Enumeratee Text Text m b
concatMapAccumM :: Monad m => (s -> Char -> m (s, Text)) -> s -> Enumeratee Text Text m b
iterate :: Monad m => (Char -> Char) -> Char -> Enumerator Text m b
iterateM :: Monad m => (Char -> m Char) -> Char -> Enumerator Text m b
repeat :: Monad m => Char -> Enumerator Text m b
repeatM :: Monad m => m Char -> Enumerator Text m b
replicate :: Monad m => Integer -> Char -> Enumerator Text m b
replicateM :: Monad m => Integer -> m Char -> Enumerator Text m b
generateM :: Monad m => m (Maybe Char) -> Enumerator Text m b
unfold :: Monad m => (s -> Maybe (Char, s)) -> s -> Enumerator Text m b
unfoldM :: Monad m => (s -> m (Maybe (Char, s))) -> s -> Enumerator Text m b
filter :: Monad m => (Char -> Bool) -> Enumeratee Text Text m b
filterM :: Monad m => (Char -> m Bool) -> Enumeratee Text Text m b
take :: Monad m => Integer -> Iteratee Text m Text
takeWhile :: Monad m => (Char -> Bool) -> Iteratee Text m Text
consume :: Monad m => Iteratee Text m Text
head :: Monad m => Iteratee Text m (Maybe Char)
drop :: Monad m => Integer -> Iteratee Text m ()
dropWhile :: Monad m => (Char -> Bool) -> Iteratee Text m ()
require :: Monad m => Integer -> Iteratee Text m ()
isolate :: Monad m => Integer -> Enumeratee Text Text m b
splitWhen :: Monad m => (Char -> Bool) -> Enumeratee Text Text m b
lines :: Monad m => Enumeratee Text Text m b
data Codec
encode :: Monad m => Codec -> Enumeratee Text ByteString m b
decode :: Monad m => Codec -> Enumeratee ByteString Text m b
utf8 :: Codec
utf16_le :: Codec
utf16_be :: Codec
utf32_le :: Codec
utf32_be :: Codec
ascii :: Codec
iso8859_1 :: Codec
IO
enumHandle :: MonadIO m => Handle -> Enumerator Text m bSource

Read lines of text from the handle, and stream them to an Iteratee. If an exception occurs during file IO, enumeration will stop and Error will be returned. Exceptions from the iteratee are not caught.

The handle should be opened with an appropriate text encoding, and in ReadMode or ReadWriteMode.

Since: 0.2

enumFile :: FilePath -> Enumerator Text IO bSource

Opens a file path in text mode, and passes the handle to enumHandle. The file will be closed when the Iteratee finishes.

Since: 0.2

iterHandle :: MonadIO m => Handle -> Iteratee Text m ()Source

Read text from a stream and write it to a handle. If an exception occurs during file IO, enumeration will stop and Error will be returned.

The handle should be opened with an appropriate text encoding, and in WriteMode or ReadWriteMode.

Since: 0.2

List analogues
Folds
fold :: Monad m => (b -> Char -> b) -> b -> Iteratee Text m bSource

Consume the entire input stream with a strict left fold, one character at a time.

Since: 0.4.8

foldM :: Monad m => (b -> Char -> m b) -> b -> Iteratee Text m bSource

Consume the entire input stream with a strict monadic left fold, one character at a time.

Since: 0.4.8

Maps
map :: Monad m => (Char -> Char) -> Enumeratee Text Text m bSource

map f applies f to each input character and feeds the resulting outputs to the inner iteratee.

Since: 0.4.8

mapM :: Monad m => (Char -> m Char) -> Enumeratee Text Text m bSource

mapM f applies f to each input character and feeds the resulting outputs to the inner iteratee.

Since: 0.4.8

mapM_ :: Monad m => (Char -> m ()) -> Iteratee Text m ()Source

mapM_ f applies f to each input character, and discards the results.

Since: 0.4.11

concatMap :: Monad m => (Char -> Text) -> Enumeratee Text Text m bSource

concatMap f applies f to each input character and feeds the resulting outputs to the inner iteratee.

Since: 0.4.8

concatMapM :: Monad m => (Char -> m Text) -> Enumeratee Text Text m bSource

concatMapM f applies f to each input character and feeds the resulting outputs to the inner iteratee.

Since: 0.4.8

Accumulating maps
mapAccum :: Monad m => (s -> Char -> (s, Char)) -> s -> Enumeratee Text Text m bSource

Similar to map, but with a stateful step function.

Since: 0.4.9

mapAccumM :: Monad m => (s -> Char -> m (s, Char)) -> s -> Enumeratee Text Text m bSource

Similar to mapM, but with a stateful step function.

Since: 0.4.9

concatMapAccum :: Monad m => (s -> Char -> (s, Text)) -> s -> Enumeratee Text Text m bSource

Similar to concatMap, but with a stateful step function.

Since: 0.4.11

concatMapAccumM :: Monad m => (s -> Char -> m (s, Text)) -> s -> Enumeratee Text Text m bSource

Similar to concatMapM, but with a stateful step function.

Since: 0.4.11

Infinite streams
iterate :: Monad m => (Char -> Char) -> Char -> Enumerator Text m bSource

iterate f x enumerates an infinite stream of repeated applications of f to x.

Analogous to iterate.

Since: 0.4.8

iterateM :: Monad m => (Char -> m Char) -> Char -> Enumerator Text m bSource

Similar to iterate, except the iteration function is monadic.

Since: 0.4.8

repeat :: Monad m => Char -> Enumerator Text m bSource

Enumerates an infinite stream of a single character.

Analogous to repeat.

Since: 0.4.8

repeatM :: Monad m => m Char -> Enumerator Text m bSource

Enumerates an infinite stream of characters. Each character is computed by the underlying monad.

Since: 0.4.8

Bounded streams
replicate :: Monad m => Integer -> Char -> Enumerator Text m bSource

replicate n x enumerates a stream containing n copies of x.

Since: 0.4.8

replicateM :: Monad m => Integer -> m Char -> Enumerator Text m bSource

replicateM n m_x enumerates a stream of n characters, with each character computed by m_x.

Since: 0.4.8

generateM :: Monad m => m (Maybe Char) -> Enumerator Text m bSource

Like repeatM, except the computation may terminate the stream by returning Nothing.

Since: 0.4.8

unfold :: Monad m => (s -> Maybe (Char, s)) -> s -> Enumerator Text m bSource

Enumerates a stream of characters by repeatedly applying a function to some state.

Similar to iterate.

Since: 0.4.8

unfoldM :: Monad m => (s -> m (Maybe (Char, s))) -> s -> Enumerator Text m bSource

Enumerates a stream of characters by repeatedly applying a computation to some state.

Similar to iterateM.

Since: 0.4.8

Filters
filter :: Monad m => (Char -> Bool) -> Enumeratee Text Text m bSource

Applies a predicate to the stream. The inner iteratee only receives characters for which the predicate is True.

Since: 0.4.8

filterM :: Monad m => (Char -> m Bool) -> Enumeratee Text Text m bSource

Applies a monadic predicate to the stream. The inner iteratee only receives characters for which the predicate returns True.

Since: 0.4.8

Consumers
take :: Monad m => Integer -> Iteratee Text m TextSource

take n extracts the next n characters from the stream, as a lazy Text.

Since: 0.4.5

takeWhile :: Monad m => (Char -> Bool) -> Iteratee Text m TextSource

takeWhile p extracts input from the stream until the first character which does not match the predicate.

Since: 0.4.5

consume :: Monad m => Iteratee Text m TextSource
consume = takeWhile (const True)

Since: 0.4.5

Unsorted
head :: Monad m => Iteratee Text m (Maybe Char)Source

Get the next character from the stream, or Nothing if the stream has ended.

Since: 0.4.5

drop :: Monad m => Integer -> Iteratee Text m ()Source

drop n ignores n characters of input from the stream.

Since: 0.4.5

dropWhile :: Monad m => (Char -> Bool) -> Iteratee Text m ()Source

dropWhile p ignores input from the stream until the first character which does not match the predicate.

Since: 0.4.5

require :: Monad m => Integer -> Iteratee Text m ()Source

require n buffers input until at least n characters are available, or throws an error if the stream ends early.

Since: 0.4.5

isolate :: Monad m => Integer -> Enumeratee Text Text m bSource

isolate n reads at most n characters from the stream, and passes them to its iteratee. If the iteratee finishes early, characters continue to be consumed from the outer stream until n have been consumed.

Since: 0.4.5

splitWhen :: Monad m => (Char -> Bool) -> Enumeratee Text Text m bSource

Split on characters satisfying a given predicate.

Since: 0.4.8

lines :: Monad m => Enumeratee Text Text m bSource
lines = splitWhen (== '\n')

Since: 0.4.8

Text codecs
data Codec Source
show/hide Instances
encode :: Monad m => Codec -> Enumeratee Text ByteString m bSource

Convert text into bytes, using the provided codec. If the codec is not capable of representing an input character, an error will be thrown.

Since: 0.2

decode :: Monad m => Codec -> Enumeratee ByteString Text m bSource

Convert bytes into text, using the provided codec. If the codec is not capable of decoding an input byte sequence, an error will be thrown.

Since: 0.2

utf8 :: CodecSource
utf16_le :: CodecSource
utf16_be :: CodecSource
utf32_le :: CodecSource
utf32_be :: CodecSource
ascii :: CodecSource
iso8859_1 :: CodecSource
Produced by Haddock version 2.6.1