conduit 1.2.7 → 1.2.8
raw patch · 3 files changed
+54/−1 lines, 3 filesdep +monad-controlPVP ok
version bump matches the API change (PVP)
Dependencies added: monad-control
API changes (from Hackage documentation)
+ Data.Conduit: (.|) :: Monad m => ConduitM a b m () -> ConduitM b c m r -> ConduitM a c m r
+ Data.Conduit: runConduitPure :: ConduitM () Void Identity r -> r
+ Data.Conduit: runConduitRes :: MonadBaseControl IO m => ConduitM () Void (ResourceT m) r -> m r
Files
- ChangeLog.md +8/−0
- Data/Conduit.hs +44/−0
- conduit.cabal +2/−1
ChangeLog.md view
@@ -1,3 +1,11 @@+## 1.2.8++* Implement+ [the reskinning idea](http://www.snoyman.com/blog/2016/09/proposed-conduit-reskin):+ * `.|`+ * `runConduitPure`+ * `runConduitRes`+ ## 1.2.7 * Expose yieldM for ConduitM [#270](https://github.com/snoyberg/conduit/pull/270)
Data/Conduit.hs view
@@ -1,5 +1,6 @@ {-# LANGUAGE RankNTypes #-} {-# LANGUAGE DeriveFunctor #-}+{-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE Safe #-} -- | If this is your first time with conduit, you should probably start with -- the tutorial:@@ -12,6 +13,7 @@ , Sink , ConduitM -- ** Connect/fuse operators+ , (.|) , ($$) , ($=) , (=$)@@ -30,6 +32,8 @@ , yieldM , leftover , runConduit+ , runConduitPure+ , runConduitRes -- ** Finalization , bracketP@@ -97,6 +101,10 @@ ) where import Data.Conduit.Internal.Conduit+import Data.Void (Void)+import Data.Functor.Identity (Identity, runIdentity)+import Control.Monad.Trans.Resource (ResourceT, runResourceT)+import Control.Monad.Trans.Control (MonadBaseControl) -- | Named function synonym for '$$'. --@@ -109,3 +117,39 @@ -- Since 1.2.3 fuse :: Monad m => Conduit a m b -> ConduitM b c m r -> ConduitM a c m r fuse = (=$=)++infixr 2 .|+-- | Combine two @Conduit@s together into a new @Conduit@ (aka 'fuse').+--+-- Output from the upstream (left) conduit will be fed into the+-- downstream (right) conduit. Processing will terminate when+-- downstream (right) returns. Leftover data returned from the right+-- @Conduit@ will be discarded.+--+-- @since 1.2.8+(.|) :: Monad m+ => ConduitM a b m () -- ^ upstream+ -> ConduitM b c m r -- ^ downstream+ -> ConduitM a c m r+(.|) = fuse+{-# INLINE (.|) #-}++-- | Run a pure pipeline until processing completes, i.e. a pipeline+-- with @Identity@ as the base monad. This is equivalient to+-- @runIdentity . runConduit@.+--+-- @since 1.2.8+runConduitPure :: ConduitM () Void Identity r -> r+runConduitPure = runIdentity . runConduit+{-# INLINE runConduitPure #-}++-- | Run a pipeline which acquires resources with @ResourceT@, and+-- then run the @ResourceT@ transformer. This is equivalent to+-- @runResourceT . runConduit@.+--+-- @since 1.2.8+runConduitRes :: MonadBaseControl IO m+ => ConduitM () Void (ResourceT m) r+ -> m r+runConduitRes = runResourceT . runConduit+{-# INLINE runConduitRes #-}
conduit.cabal view
@@ -1,5 +1,5 @@ Name: conduit-Version: 1.2.7+Version: 1.2.8 Synopsis: Streaming data processing library. description: Hackage documentation generation is not reliable. For up to date documentation, please see: <http://www.stackage.org/package/conduit>.@@ -35,6 +35,7 @@ , transformers >= 0.2.2 , mtl , mmorph+ , monad-control if !impl(ghc>=7.9) build-depends: void >= 0.5.5 ghc-options: -Wall