Safe Haskell | None |
---|
Handle streams of text.
Parts of this code were taken from enumerator and adapted for conduits.
- data Codec
- encode :: MonadThrow m => Codec -> Conduit Text m ByteString
- decode :: MonadThrow m => Codec -> Conduit ByteString m Text
- utf8 :: Codec
- utf16_le :: Codec
- utf16_be :: Codec
- utf32_le :: Codec
- utf32_be :: Codec
- ascii :: Codec
- iso8859_1 :: Codec
- lines :: Monad m => Conduit Text m Text
- linesBounded :: MonadThrow m => Int -> Conduit Text m Text
- data TextException
- takeWhile :: Monad m => (Char -> Bool) -> Conduit Text m Text
- dropWhile :: Monad m => (Char -> Bool) -> Consumer Text m ()
- take :: Monad m => Int -> Conduit Text m Text
- drop :: Monad m => Int -> Consumer Text m ()
- foldLines :: Monad m => (a -> ConduitM Text o m a) -> a -> ConduitM Text o m a
- withLine :: Monad m => Sink Text m a -> Consumer Text m (Maybe a)
Text codecs
encode :: MonadThrow m => Codec -> Conduit Text m ByteStringSource
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 -> Conduit ByteString m TextSource
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
linesBounded :: MonadThrow m => Int -> Conduit Text m TextSource
Variant of the lines function with an integer parameter. The text length of any emitted line never exceeds the value of the paramater. 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.