packages feed

pipes-text 0.0.0.10 → 0.0.0.11

raw patch · 4 files changed

+62/−52 lines, 4 filesdep +streaming-commonsdep −text-stream-decodedep ~bytestringdep ~pipes-parsedep ~pipes-safe

Dependencies added: streaming-commons

Dependencies removed: text-stream-decode

Dependency ranges changed: bytestring, pipes-parse, pipes-safe, transformers

Files

Pipes/Text.hs view
@@ -104,7 +104,6 @@ import qualified Data.Text as T import Data.Text (Text) import qualified Data.Text.Lazy as TL-import Data.Text.Lazy.Internal (foldrChunks, defaultChunkSize) import Data.ByteString (ByteString) import Data.Functor.Constant (Constant(Constant, getConstant)) import Data.Functor.Identity (Identity)@@ -115,10 +114,12 @@ import qualified Pipes.Group as PG import qualified Pipes.Parse as PP import Pipes.Parse (Parser)+import Pipes.Text.Encoding (Lens'_, Iso'_) import qualified Pipes.Prelude as P import Data.Char (isSpace) import Data.Word (Word8)-+import Foreign.Storable (sizeOf)+import Data.Bits (shiftL) import Prelude hiding (     all,     any,@@ -227,7 +228,7 @@     are a distraction. The lens combinators to keep in mind, the ones that make sense for      our lenses, are @view@ \/ @(^.)@), @over@ \/ @(%~)@ , and @zoom@.  -    One need only keep in mind that if @l@ is a @Lens' a b@, then:+    One need only keep in mind that if @l@ is a @Lens'_ a b@, then:  -} {- $view@@ -365,7 +366,7 @@      One might think that  ->   lines :: Monad m => Lens' (Producer Text m r) (FreeT (Producer Text m) m r)+>   lines :: Monad m => Lens'_ (Producer Text m r) (FreeT (Producer Text m) m r) >   view . lines :: Monad m => Producer Text m r -> FreeT (Producer Text m) m r      should really have the type@@ -419,14 +420,10 @@  -- | Convert a lazy 'TL.Text' into a 'Producer' of strict 'Text's fromLazy :: (Monad m) => TL.Text -> Producer' Text m ()-fromLazy  = foldrChunks (\e a -> yield e >> a) (return ()) +fromLazy  = TL.foldrChunks (\e a -> yield e >> a) (return ())  {-# INLINE fromLazy #-}  -type Lens' a b = forall f . Functor f => (b -> f b) -> (a -> f a)--type Iso' a b = forall f p . (Functor f, Profunctor p) => p b (f b) -> p a (f a)- (^.) :: a -> ((b -> Constant b b) -> (a -> Constant b a)) -> b a ^. lens = getConstant (lens Constant a) @@ -788,7 +785,7 @@ splitAt     :: (Monad m, Integral n)     => n-    -> Lens' (Producer Text m r)+    -> Lens'_ (Producer Text m r)              (Producer Text m (Producer Text m r)) splitAt n0 k p0 = fmap join (k (go n0 p0))   where@@ -817,7 +814,7 @@ span     :: (Monad m)     => (Char -> Bool)-    -> Lens' (Producer Text m r)+    -> Lens'_ (Producer Text m r)              (Producer Text m (Producer Text m r)) span predicate k p0 = fmap join (k (go p0))   where@@ -842,7 +839,7 @@ break     :: (Monad m)     => (Char -> Bool)-    -> Lens' (Producer Text m r)+    -> Lens'_ (Producer Text m r)              (Producer Text m (Producer Text m r)) break predicate = span (not . predicate) {-# INLINABLE break #-}@@ -853,7 +850,7 @@ groupBy     :: (Monad m)     => (Char -> Char -> Bool)-    -> Lens' (Producer Text m r)+    -> Lens'_ (Producer Text m r)              (Producer Text m (Producer Text m r)) groupBy equals k p0 = fmap join (k ((go p0))) where     go p = do@@ -867,7 +864,7 @@  -- | Improper lens that splits after the first succession of identical 'Char' s group :: Monad m -      => Lens' (Producer Text m r)+      => Lens'_ (Producer Text m r)                (Producer Text m (Producer Text m r)) group = groupBy (==) {-# INLINABLE group #-}@@ -877,7 +874,7 @@     Unlike 'words', this does not drop leading whitespace  -} word :: (Monad m) -     => Lens' (Producer Text m r)+     => Lens'_ (Producer Text m r)               (Producer Text m (Producer Text m r)) word k p0 = fmap join (k (to p0))   where@@ -888,7 +885,7 @@   line :: (Monad m) -     => Lens' (Producer Text m r)+     => Lens'_ (Producer Text m r)               (Producer Text m (Producer Text m r)) line = break (== '\n') @@ -920,7 +917,7 @@   -- | Improper isomorphism between a 'Producer' of 'ByteString's and 'Word8's-packChars :: Monad m => Iso' (Producer Char m x) (Producer Text m x)+packChars :: Monad m => Iso'_ (Producer Char m x) (Producer Text m x) packChars = Data.Profunctor.dimap to (fmap from)   where     -- to :: Monad m => Producer Char m x -> Producer Text m x@@ -932,13 +929,16 @@      -- from :: Monad m => Producer Text m x -> Producer Char m x     from p = for p (each . T.unpack)+     {-# INLINABLE packChars #-} +defaultChunkSize :: Int+defaultChunkSize = 16384 - (sizeOf (undefined :: Int) `shiftL` 1)  -- | Split a text stream into 'FreeT'-delimited text streams of fixed size chunksOf     :: (Monad m, Integral n)-    => n -> Lens' (Producer Text m r) +    => n -> Lens'_ (Producer Text m r)                    (FreeT (Producer Text m) m r) chunksOf n k p0 = fmap concats (k (FreeT (go p0)))   where@@ -984,7 +984,7 @@ -- | Split a text stream using the given 'Char' as the delimiter splits :: (Monad m)       => Char-      -> Lens' (Producer Text m r)+      -> Lens'_ (Producer Text m r)                (FreeT (Producer Text m) m r) splits c k p =           fmap (PG.intercalates (yield (T.singleton c))) (k (splitsWith (c ==) p))@@ -996,7 +996,7 @@ groupsBy     :: Monad m     => (Char -> Char -> Bool)-    -> Lens' (Producer Text m x) (FreeT (Producer Text m) m x)+    -> Lens'_ (Producer Text m x) (FreeT (Producer Text m) m x) groupsBy equals k p0 = fmap concats (k (FreeT (go p0))) where    go p = do x <- next p             case x of Left   r       -> return (Pure r)@@ -1011,7 +1011,7 @@ -- | Like 'groupsBy', where the equality predicate is ('==') groups     :: Monad m-    => Lens' (Producer Text m x) (FreeT (Producer Text m) m x)+    => Lens'_ (Producer Text m x) (FreeT (Producer Text m) m x) groups = groupsBy (==) {-# INLINABLE groups #-} @@ -1020,7 +1020,7 @@ {-| Split a text stream into 'FreeT'-delimited lines -} lines-    :: (Monad m) => Iso' (Producer Text m r)  (FreeT (Producer Text m) m r)+    :: (Monad m) => Iso'_ (Producer Text m r)  (FreeT (Producer Text m) m r) lines = Data.Profunctor.dimap _lines (fmap _unlines)   where   _lines p0 = FreeT (go0 p0) @@ -1051,7 +1051,7 @@  -- | Split a text stream into 'FreeT'-delimited words words-    :: (Monad m) => Iso' (Producer Text m r) (FreeT (Producer Text m) m r)+    :: (Monad m) => Iso'_ (Producer Text m r) (FreeT (Producer Text m) m r) words = Data.Profunctor.dimap go (fmap _unwords)   where     go p = FreeT $ do
Pipes/Text/Encoding.hs view
@@ -41,10 +41,13 @@     , decodeAscii     , encodeIso8859_1     , decodeIso8859_1+    , Lens'_+    , Iso'_     )      where  import Data.Functor.Constant (Constant(..))+import Data.Profunctor (Profunctor) import Data.Char (ord) import Data.ByteString as B  import Data.ByteString (ByteString)@@ -52,20 +55,22 @@ 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)+type Lens'_ a b = forall f . Functor f => (b -> f b) -> (a -> f a)+type Iso'_ a b = forall f p . (Functor f, Profunctor p) => p b (f b) -> p a (f a)  {- $lenses     The 'Codec' type is a simple specializion of -    the @Lens'@ type synonymn used by the standard lens libraries, +    the @Lens'_@ type synonymn used by the standard lens libraries,      <http://hackage.haskell.org/package/lens lens> and      <http://hackage.haskell.org/package/lens-family lens-family>. That type,      ->   type Lens' a b = forall f . Functor f => (b -> f b) -> (a -> f a)+>   type Lens'_ a b = forall f . Functor f => (b -> f b) -> (a -> f a)      is just an alias for a Prelude type. Thus you use any particular codec with     the @view@ / @(^.)@ , @zoom@ and @over@ functions from either of those libraries;@@ -76,7 +81,7 @@ type Codec     =  forall m r     .  Monad m-    => Lens' (Producer ByteString m r)+    => Lens'_ (Producer ByteString m r)              (Producer Text m (Producer ByteString m r))  {- | 'decode' is just the ordinary @view@ or @(^.)@ of the lens libraries;@@ -202,27 +207,27 @@   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 #-}  @@ -242,15 +247,15 @@    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 => 
changelog view
@@ -1,3 +1,7 @@+# Version 0.0.0.11++* Updated to use streaming-commons in place of text-stream-decoding.+ # Version 0.0.0.10  * Documentation changes.
pipes-text.cabal view
@@ -1,5 +1,5 @@ name:                pipes-text-version:             0.0.0.10+version:             0.0.0.11 synopsis:            Text pipes. description:         * This package will be in a draft, or testing, phase until version 0.0.1. Please report any installation difficulties, or any wisdom about the api, on the github page or the <https://groups.google.com/forum/#!forum/haskell-pipes pipes list>                      .@@ -9,7 +9,7 @@                      .                      Familiarity with the other three packages should give one an idea what to expect where. The package has three modules, @Pipes.Text@ , @Pipes.Text.Encoding@ and @Pipes.Text.IO@; the division has more or less the significance it has in the @text@ library.                       .-                     Note that the module @Pipes.Text.IO@ is present as a convenience (as is @Data.Text.IO@).  Official pipes IO would use @Pipes.ByteString@ and the decoding functions present here, based on the new Michael Snoyman's new @text-stream-decoding@ package.  In particular, the @Pipes.Text.IO@ functions use Text exceptions. +                     Note that the module @Pipes.Text.IO@ is present as a convenience (as is @Data.Text.IO@).  Official pipes IO would use @Pipes.ByteString@ together with the bytestring decoding functions present here, based on Michael Snoyman's excellent @streaming-commons@ package.  In particular, the @Pipes.Text.IO@ functions use Text exceptions.                       .                      @Pipes.Text.IO@ uses version 0.11.3 or later of the @text@ library. It thus works with the version of @text@ that came with the 2013 Haskell Platform. To use an older @text@, install with the flag @-fnoio@ @@ -34,17 +34,18 @@  library   exposed-modules:     Pipes.Text, Pipes.Text.Encoding-  build-depends:       base >= 4                  && < 5  ,-                       bytestring >= 0.9                  ,-                       text >=0.11.2              && < 1.2,-                       text-stream-decode >= 0.1  && < 0.2,  -                       profunctors  >= 3.1.1      && < 4.1,-                       pipes >=4.0                && < 4.2,-                       pipes-group  >= 1.0.0      && < 1.1,-                       pipes-parse >=2.0          && < 3.1,-                       pipes-safe, -                       pipes-bytestring >= 1.0    && < 2.1,-                       transformers >= 0.2.0.0    && < 0.4+  build-depends:       base              >= 4       && < 5   ,+                       bytestring        >= 0.9.2.1 && < 0.11,+                       text              >= 0.11.2  && < 1.2 ,+                       streaming-commons >= 0.1     && < 0.2 ,  +                       profunctors       >= 3.1.1   && < 4.1 ,+                       pipes             >= 4.0     && < 4.2 ,+                       pipes-group       >= 1.0.0   && < 1.1 ,+                       pipes-parse       >= 3.0.0   && < 3.1 ,+                       pipes-safe        >= 2.1     && < 2.3 , +                       pipes-bytestring  >= 1.0     && < 2.1 ,+                       transformers      >= 0.2.0.0 && < 0.5+   other-extensions:    RankNTypes   default-language:    Haskell2010   ghc-options: -O2