conduit-extra-1.3.6: Batteries included conduit: adapters for common libraries.
Safe HaskellSafe-Inferred
LanguageHaskell2010

Data.Conduit.Text

Contents

Description

NOTE It is recommended to start using Data.Conduit.Combinators instead of this module.

Copyright: 2011 Michael Snoyman, 2010-2011 John Millikin License: MIT

Handle streams of text.

Parts of this code were taken from enumerator and adapted for conduits.

For many purposes, it's recommended to use the conduit-combinators library, which provides a more complete set of functions.

Synopsis

Text codecs

data Codec Source #

A specific character encoding.

Since 0.3.0

Instances

Instances details
Show Codec Source # 
Instance details

Defined in Data.Conduit.Text

Methods

showsPrec :: Int -> Codec -> ShowS #

show :: Codec -> String #

showList :: [Codec] -> ShowS #

encode :: MonadThrow m => Codec -> ConduitT Text ByteString m () Source #

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

Since 0.3.0

decode :: MonadThrow m => Codec -> ConduitT ByteString Text m () Source #

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

Since 0.3.0

utf8 :: Codec Source #

Since 0.3.0

utf16_le :: Codec Source #

Since 0.3.0

utf16_be :: Codec Source #

Since 0.3.0

utf32_le :: Codec Source #

Since 0.3.0

utf32_be :: Codec Source #

Since 0.3.0

ascii :: Codec Source #

Since 0.3.0

iso8859_1 :: Codec Source #

Since 0.3.0

lines :: Monad m => ConduitT Text Text m () Source #

Emit each line separately

Since 0.4.1

linesBounded :: MonadThrow m => Int -> ConduitT Text Text m () Source #

Variant of the lines function with an integer parameter. The text length of any emitted line never exceeds the value of the parameter. Whenever this is about to happen a LengthExceeded exception is thrown. This function should be used instead of the lines function whenever we are dealing with user input (e.g. a file upload) because we can't be sure that user input won't have extraordinarily large lines which would require large amounts of memory if consumed.

takeWhile :: Monad m => (Char -> Bool) -> ConduitT Text Text m () Source #

Since 1.0.8

dropWhile :: Monad m => (Char -> Bool) -> ConduitT Text o m () Source #

Since 1.0.8

take :: Monad m => Int -> ConduitT Text Text m () Source #

Since 1.0.8

drop :: Monad m => Int -> ConduitT Text o m () Source #

Since 1.0.8

foldLines :: Monad m => (a -> ConduitM Text o m a) -> a -> ConduitT Text o m a Source #

Since 1.0.8

withLine :: Monad m => ConduitT Text Void m a -> ConduitT Text o m (Maybe a) Source #

Since 1.0.8

decodeUtf8 :: forall (m :: Type -> Type). MonadThrow m => ConduitT ByteString Text m () Source #

Decode a stream of binary data as UTF8.

Since: conduit-1.3.0

decodeUtf8Lenient :: forall (m :: Type -> Type). Monad m => ConduitT ByteString Text m () Source #

Decode a stream of binary data as UTF8, replacing any invalid bytes with the Unicode replacement character.

Since: conduit-1.3.0

encodeUtf8 :: forall (m :: Type -> Type) text binary. (Monad m, Utf8 text binary) => ConduitT text binary m () Source #

Encode a stream of text as UTF8.

Subject to fusion

Since: conduit-1.3.0

detectUtf :: MonadThrow m => ConduitT ByteString Text m () Source #

Automatically determine which UTF variant is being used. This function checks for BOMs, removing them as necessary. It defaults to assuming UTF-8.

Since 1.1.9