iteratee 0.8.7.1 → 0.8.7.2
raw patch · 3 files changed
+15/−13 lines, 3 files
Files
- iteratee.cabal +1/−1
- src/Data/Iteratee/Iteratee.hs +12/−10
- src/Data/Iteratee/ListLike.hs +2/−2
iteratee.cabal view
@@ -1,5 +1,5 @@ name: iteratee-version: 0.8.7.1+version: 0.8.7.2 synopsis: Iteratee-based I/O description: The Iteratee monad provides strict, safe, and functional I/O. In addition
src/Data/Iteratee/Iteratee.hs view
@@ -272,9 +272,9 @@ -- > unpacker = mapChunks B.unpack -- mapChunks :: (Monad m, NullPoint s) => (s -> s') -> Enumeratee s s' m a-mapChunks f = eneeCheckIfDone (liftI . step)+mapChunks f = eneeCheckIfDonePass (icont . step) where- step k (Chunk xs) = eneeCheckIfDone (liftI . step) . k . Chunk $ f xs+ step k (Chunk xs) = eneeCheckIfDonePass (icont . step) . k . Chunk $ f xs step k str@(EOF mErr) = idone (k $ EOF mErr) str {-# INLINE mapChunks #-} @@ -283,10 +283,10 @@ :: (Monad m, NullPoint s, Nullable s) => (s -> m s') -> Enumeratee s s' m a-mapChunksM f = eneeCheckIfDone (liftI . step)+mapChunksM f = eneeCheckIfDonePass (icont . step) where step k (Chunk xs) = lift (f xs) >>=- eneeCheckIfDone (liftI . step) . k . Chunk+ eneeCheckIfDonePass (icont . step) . k . Chunk step k str@(EOF mErr) = idone (k $ EOF mErr) str {-# INLINE mapChunksM #-} @@ -301,10 +301,11 @@ (Monad m, Nullable s) => Iteratee s m s' -> Enumeratee s s' m a-convStream fi = eneeCheckIfDone check+convStream fi = eneeCheckIfDonePass check where- check k = isStreamFinished >>= maybe (step k) (idone (liftI k) . EOF . Just)- step k = fi >>= eneeCheckIfDone check . k . Chunk+ check k (Just e) = throwRecoverableErr e (const identity) >> check k Nothing+ check k _ = isStreamFinished >>= maybe (step k) (idone (liftI k) . EOF . Just)+ step k = fi >>= eneeCheckIfDonePass check . k . Chunk -- |The most general stream converter. Given a function to produce iteratee -- transformers and an initial state, convert the stream using iteratees@@ -314,12 +315,13 @@ (acc -> Iteratee s m (acc, s')) -> acc -> Enumeratee s s' m a-unfoldConvStream f acc0 = eneeCheckIfDone (check acc0)+unfoldConvStream f acc0 = eneeCheckIfDonePass (check acc0) where- check acc k = isStreamFinished >>=+ check acc k (Just e) = throwRecoverableErr e (const identity) >> check acc k Nothing+ check acc k _ = isStreamFinished >>= maybe (step acc k) (idone (liftI k) . EOF . Just) step acc k = f acc >>= \(acc', s') ->- eneeCheckIfDone (check acc') . k . Chunk $ s'+ eneeCheckIfDonePass (check acc') . k . Chunk $ s' unfoldConvStreamCheck :: (Monad m, Nullable elo, Monoid elo)
src/Data/Iteratee/ListLike.hs view
@@ -320,13 +320,13 @@ :: (Monad m, LL.ListLike s el, NullPoint s) => (el -> Bool) -> Enumeratee s s m a-breakE cpred = eneeCheckIfDone (liftI . step)+breakE cpred = eneeCheckIfDonePass (icont . step) where step k (Chunk s) | LL.null s = liftI (step k) | otherwise = case LL.break cpred s of (str', tail')- | LL.null tail' -> eneeCheckIfDone (liftI . step) . k $ Chunk str'+ | LL.null tail' -> eneeCheckIfDonePass (icont . step) . k $ Chunk str' | otherwise -> idone (k $ Chunk str') (Chunk tail') step k stream = idone (k stream) stream {-# INLINE breakE #-}