X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=Pipes%2FText%2FEncoding.hs;h=e00cd430e20771d1ebda6b6c0f2de8bf8a280175;hb=17a14f6de0cf6ade58cafd81d5f50d9fce11f0bd;hp=4311ad1d6de73b8555799fc82675fa8af4a667cd;hpb=4ea59a8b6fb2d9ea4f7125df67ad3b91e67c6926;p=github%2Ffretlink%2Ftext-pipes.git diff --git a/Pipes/Text/Encoding.hs b/Pipes/Text/Encoding.hs index 4311ad1..e00cd43 100644 --- a/Pipes/Text/Encoding.hs +++ b/Pipes/Text/Encoding.hs @@ -12,7 +12,7 @@ module Pipes.Text.Encoding -- $lenses Codec , decode - -- * Viewing the Text in a ByteString + -- * \'Viewing\' the Text in a byte stream -- $codecs , utf8 , utf8Pure @@ -52,12 +52,12 @@ import Data.ByteString.Char8 as B8 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 @@ -131,11 +131,11 @@ decode codec a = getConstant (codec Constant a) > 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 @@ -203,27 +203,27 @@ decodeStream = loop where 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 #-} @@ -243,15 +243,15 @@ decodeUtf32BE = decodeStream streamUtf32BE 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 =>