From 1ccab7417abf530b1a2524bb7d7beebfeca6092d Mon Sep 17 00:00:00 2001 From: Sarah Vaupel Date: Wed, 17 Sep 2025 17:29:44 +0200 Subject: [PATCH] update for newer versions of base and conduit --- conduit-resumablesink.cabal | 10 ++++------ hssrc/Data/Conduit/ResumableSink.hs | 20 ++++++++++---------- 2 files changed, 14 insertions(+), 16 deletions(-) diff --git a/conduit-resumablesink.cabal b/conduit-resumablesink.cabal index 092c58c..00b6eff 100644 --- a/conduit-resumablesink.cabal +++ b/conduit-resumablesink.cabal @@ -1,5 +1,5 @@ Name: conduit-resumablesink -Version: 0.2 +Version: 0.3 Synopsis: Allows conduit to resume sinks to feed multiple sources into it. Description: @conduit-resumablesink@ is a solution to the problem where you have a @conduit@ @@ -16,13 +16,12 @@ Cabal-version: >=1.8 Homepage: http://github.com/A1kmm/conduit-resumablesink Library - Hs-Source-Dirs: hssrc + Hs-Source-Dirs: hssrc Exposed-modules: Data.Conduit.ResumableSink Build-depends: base >= 4 && < 5, - conduit >= 1.2 && <1.3, - void >= 0.6 && < 0.8 - ghc-options: -Wall + conduit >= 1.2 && <2 + ghc-options: -Wall test-suite test hs-source-dirs: test @@ -33,7 +32,6 @@ test-suite test base, hspec >= 1.3, bytestring, - void, resourcet, transformers ghc-options: -Wall diff --git a/hssrc/Data/Conduit/ResumableSink.hs b/hssrc/Data/Conduit/ResumableSink.hs index b3226ab..3810a78 100644 --- a/hssrc/Data/Conduit/ResumableSink.hs +++ b/hssrc/Data/Conduit/ResumableSink.hs @@ -13,22 +13,22 @@ data ResumableSink i m r = ResumableSink (Sink i m r) -- | Connects a new source to a resumable sink. The result will be Right an updated -- ResumableSink or Left result if the Sink completes. connectResumeSink :: Monad m => Source m i -> ResumableSink i m r -> m (Either r (ResumableSink i m r)) -connectResumeSink (ConduitM left') (ResumableSink (ConduitM right')) = go (return ()) (left' Done) (right' Done) +connectResumeSink (ConduitT left') (ResumableSink (ConduitT right')) = go (return ()) (left' Done) (right' Done) where go :: Monad m => m () -> Pipe () () i () m () -> Pipe i i Void () m r -> m (Either r (ResumableSink i m r)) - go final (NeedInput cont0 _ ) right = go final (cont0 ()) right - go final (Done ()) right = return . Right . ResumableSink $ ConduitM (\finalize -> right >>= finalize) - go final (PipeM pm) right = pm >>= \left -> go final left right - go final (Leftover left ()) right = go final left right - go final0 (HaveOutput left1 final1 o) (NeedInput cont0 _) = go (final0 >> final1) left1 (cont0 o) - go _ _ (HaveOutput _ _ o) = absurd o - go final _ (Done r) = Left r <$ final - go final left (PipeM pm) = pm >>= go final left - go final left (Leftover right i) = go final (HaveOutput left (return ()) i) right + go final (NeedInput cont0 _) right = go final (cont0 ()) right + go final (Done ()) right = return . Right . ResumableSink $ ConduitT (\finalize -> right >>= finalize) + go final (PipeM pm) right = pm >>= \left -> go final left right + go final (Leftover left ()) right = go final left right + go final (HaveOutput left o) (NeedInput cont0 _) = go final left (cont0 o) + go _ _ (HaveOutput _ o) = absurd o + go final _ (Done r) = Left r <$ final + go final left (PipeM pm) = pm >>= go final left + go final left (Leftover right i) = go final (HaveOutput left i) right -- | Converts a sink into a ResumableSink that can be used with ++$$ newResumableSink :: Monad m => Sink i m r -> ResumableSink i m r