packages feed

conduit 1.3.1.2 → 1.3.2

raw patch · 5 files changed

+26/−3 lines, 5 filesPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

API changes (from Hackage documentation)

- Conduit: askUnliftIO :: MonadUnliftIO m => m (UnliftIO m)
+ Data.Conduit: mapInputM :: Monad m => (i1 -> m i2) -> (i2 -> m (Maybe i1)) -> ConduitT i2 o m r -> ConduitT i1 o m r

Files

ChangeLog.md view
@@ -1,5 +1,9 @@ # ChangeLog for conduit +## 1.3.2++* Add `mapInputM` [#435](https://github.com/snoyberg/conduit/pull/435)+ ## 1.3.1.2  * More eagerly emit groups in `chunksOf` [#427](https://github.com/snoyberg/conduit/pull/427)
conduit.cabal view
@@ -1,5 +1,5 @@ Name:                conduit-Version:             1.3.1.2+Version:             1.3.2 Synopsis:            Streaming data processing library. description:     `conduit` is a solution to the streaming data problem, allowing for production,
src/Data/Conduit.hs view
@@ -57,6 +57,7 @@     , mapOutput     , mapOutputMaybe     , mapInput+    , mapInputM     , mergeSource     , passthroughSink     , sourceToList
src/Data/Conduit/Internal.hs view
@@ -11,8 +11,9 @@  import           Data.Conduit.Internal.Conduit hiding (await,                                                 awaitForever, bracketP,-                                                leftover, mapInput, mapOutput,-                                                mapOutputMaybe, transPipe,+                                                leftover, mapInput, mapInputM,+                                                mapOutput, mapOutputMaybe,+                                                transPipe,                                                 yield, yieldM) import           Data.Conduit.Internal.Pipe import           Data.Conduit.Internal.Fusion
src/Data/Conduit/Internal/Conduit.hs view
@@ -72,6 +72,7 @@     , Data.Conduit.Internal.Conduit.mapOutput     , Data.Conduit.Internal.Conduit.mapOutputMaybe     , Data.Conduit.Internal.Conduit.mapInput+    , Data.Conduit.Internal.Conduit.mapInputM     , zipSinks     , zipSources     , zipSourcesApp@@ -987,6 +988,22 @@     go (Done r) = rest r     go (PipeM mp) = PipeM $ liftM go mp     go (Leftover p i) = maybe id (flip Leftover) (f' i) (go p)+    in go (c0 Done)++-- | Apply a monadic action to all the input values of a @ConduitT@.+--+-- Since 1.3.2+mapInputM :: Monad m+          => (i1 -> m i2) -- ^ map initial input to new input+          -> (i2 -> m (Maybe i1)) -- ^ map new leftovers to initial leftovers+          -> ConduitT i2 o m r+          -> ConduitT i1 o m r+mapInputM f f' (ConduitT c0) = ConduitT $ \rest -> let+    go (HaveOutput p o) = HaveOutput (go p) o+    go (NeedInput p c)  = NeedInput (\i -> PipeM $ go . p <$> f i) (go . c)+    go (Done r)         = rest r+    go (PipeM mp)       = PipeM $ fmap go mp+    go (Leftover p i)   = PipeM $ (\x -> maybe id (flip Leftover) x (go p)) <$> f' i     in go (c0 Done)  -- | The connect-and-resume operator. This does not close the @Source@, but