-- $lenses
Codec
, decode
- -- * Viewing the Text in a ByteString
+ -- * \'Viewing\' the Text in a byte stream
-- $codecs
, utf8
, utf8Pure
import Data.Text (Text)
import qualified Data.Text as T
import qualified Data.Text.Encoding as TE
-import Data.Text.StreamDecoding
+import qualified Data.Streaming.Text as Stream
+import Data.Streaming.Text (DecodeResult(..))
import Control.Monad (join)
import Data.Word (Word8)
import Pipes
-
type Lens' a b = forall f . Functor f => (b -> f b) -> (a -> f a)
{- $lenses
> zoom utf8 drawChar :: Monad m => StateT (Producer ByteString m r) m (Maybe Char)
- or, with the type synonymn of @Pipes.Parse@:
+ or, using the type synonymn from @Pipes.Parse@:
> zoom utf8 drawChar :: Monad m => Parser ByteString m (Maybe Char)
- Thus we can define ByteString like this:
+ Thus we can define a ByteString parser like this:
> withNextByte :: Parser ByteString m (Maybe Char, Maybe Word8)))
> withNextByte = do char_ <- zoom utf8 Text.drawChar
decodeUtf8 :: Monad m => Producer ByteString m r -> Producer Text m (Producer ByteString m r)
-decodeUtf8 = decodeStream streamUtf8
+decodeUtf8 = decodeStream Stream.decodeUtf8
{-# INLINE decodeUtf8 #-}
decodeUtf8Pure :: Monad m => Producer ByteString m r -> Producer Text m (Producer ByteString m r)
-decodeUtf8Pure = decodeStream streamUtf8Pure
+decodeUtf8Pure = decodeStream Stream.decodeUtf8Pure
{-# INLINE decodeUtf8Pure #-}
decodeUtf16LE :: Monad m => Producer ByteString m r -> Producer Text m (Producer ByteString m r)
-decodeUtf16LE = decodeStream streamUtf16LE
+decodeUtf16LE = decodeStream Stream.decodeUtf16LE
{-# INLINE decodeUtf16LE #-}
decodeUtf16BE :: Monad m => Producer ByteString m r -> Producer Text m (Producer ByteString m r)
-decodeUtf16BE = decodeStream streamUtf16BE
+decodeUtf16BE = decodeStream Stream.decodeUtf16BE
{-# INLINE decodeUtf16BE #-}
decodeUtf32LE :: Monad m => Producer ByteString m r -> Producer Text m (Producer ByteString m r)
-decodeUtf32LE = decodeStream streamUtf32LE
+decodeUtf32LE = decodeStream Stream.decodeUtf32LE
{-# INLINE decodeUtf32LE #-}
decodeUtf32BE :: Monad m => Producer ByteString m r -> Producer Text m (Producer ByteString m r)
-decodeUtf32BE = decodeStream streamUtf32BE
+decodeUtf32BE = decodeStream Stream.decodeUtf32BE
{-# INLINE decodeUtf32BE #-}
using the encoding functions from Data.Text.Encoding
-}
-encodeUtf8 :: Monad m => Text -> Producer ByteString m ()
+encodeUtf8 :: Monad m => Text -> Producer' ByteString m ()
encodeUtf8 = yield . TE.encodeUtf8
-encodeUtf16LE :: Monad m => Text -> Producer ByteString m ()
+encodeUtf16LE :: Monad m => Text -> Producer' ByteString m ()
encodeUtf16LE = yield . TE.encodeUtf16LE
-encodeUtf16BE :: Monad m => Text -> Producer ByteString m ()
+encodeUtf16BE :: Monad m => Text -> Producer' ByteString m ()
encodeUtf16BE = yield . TE.encodeUtf16BE
-encodeUtf32LE :: Monad m => Text -> Producer ByteString m ()
+encodeUtf32LE :: Monad m => Text -> Producer' ByteString m ()
encodeUtf32LE = yield . TE.encodeUtf32LE
-encodeUtf32BE :: Monad m => Text -> Producer ByteString m ()
+encodeUtf32BE :: Monad m => Text -> Producer' ByteString m ()
encodeUtf32BE = yield . TE.encodeUtf32BE
mkCodec :: (forall r m . Monad m =>