enumerator 0.4 → 0.4.0.1
raw patch · 5 files changed
+16/−9 lines, 5 filesdep ~textPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependency ranges changed: text
API changes (from Hackage documentation)
+ Data.Enumerator: run_ :: (Monad m) => Iteratee a m b -> m b
- Data.Enumerator.IO: enumHandle :: Integer -> Handle -> Enumerator ByteString IO b
+ Data.Enumerator.IO: enumHandle :: (MonadIO m) => Integer -> Handle -> Enumerator ByteString m b
- Data.Enumerator.IO: iterHandle :: Handle -> Iteratee ByteString IO ()
+ Data.Enumerator.IO: iterHandle :: (MonadIO m) => Handle -> Iteratee ByteString m ()
- Data.Enumerator.Text: enumHandle :: Handle -> Enumerator Text IO b
+ Data.Enumerator.Text: enumHandle :: (MonadIO m) => Handle -> Enumerator Text m b
- Data.Enumerator.Text: iterHandle :: Handle -> Iteratee Text IO ()
+ Data.Enumerator.Text: iterHandle :: (MonadIO m) => Handle -> Iteratee Text m ()
Files
- enumerator.cabal +2/−2
- hs/Data/Enumerator.hs +3/−0
- hs/Data/Enumerator/IO.hs +5/−3
- hs/Data/Enumerator/Text.hs +3/−2
- hs/Data/Enumerator/Util.hs +3/−2
enumerator.cabal view
@@ -1,5 +1,5 @@ name: enumerator-version: 0.4+version: 0.4.0.1 synopsis: Implementation of Oleg Kiselyov's left-fold enumerators license: MIT license-file: license.txt@@ -32,7 +32,7 @@ build-depends: transformers >= 0.2 && < 0.3 , bytestring >= 0.9 && < 0.10- , text >= 0.7 && < 0.8+ , text >= 0.7 && < 0.9 if impl(ghc >= 6.10) build-depends:
hs/Data/Enumerator.hs view
@@ -34,6 +34,7 @@ , (<==<) -- ** Iteratees , run+ , run_ , consume , isEOF , liftTrans@@ -307,6 +308,8 @@ Error err -> return $ Left err Yield x _ -> return $ Right x Continue _ -> error "run: divergent iteratee"+run_ :: Monad m => Iteratee a m b -> m b+run_ i = run i >>= either E.throw return -- | Print chunks as they're received from the enumerator, optionally -- printing empty chunks. printChunks :: (MIO.MonadIO m, Show a) => Bool -> Iteratee a m ()
hs/Data/Enumerator/IO.hs view
@@ -17,6 +17,7 @@ ) where import Data.Enumerator import Data.Enumerator.Util+import Control.Monad.IO.Class (MonadIO) import qualified Control.Exception as E import qualified Data.ByteString as B import qualified System.IO as IO@@ -32,9 +33,10 @@ -- -- The handle should be opened with no encoding, and in 'IO.ReadMode' or -- 'IO.ReadWriteMode'.-enumHandle :: Integer -- ^ Buffer size+enumHandle :: MonadIO m+ => Integer -- ^ Buffer size -> IO.Handle- -> Enumerator B.ByteString IO b+ -> Enumerator B.ByteString m b enumHandle bufferSize h = Iteratee . loop where loop (Continue k) = withBytes $ \bytes -> if B.null bytes then return $ Continue k@@ -66,7 +68,7 @@ -- -- The handle should be opened with no encoding, and in 'IO.WriteMode' or -- 'IO.ReadWriteMode'.-iterHandle :: IO.Handle -> Iteratee B.ByteString IO ()+iterHandle :: MonadIO m => IO.Handle -> Iteratee B.ByteString m () iterHandle h = continue step where step EOF = yield () EOF step (Chunks []) = continue step
hs/Data/Enumerator/Text.hs view
@@ -27,6 +27,7 @@ , ascii , iso8859_1 ) where+import Control.Monad.IO.Class (MonadIO) import qualified Control.Exception as E import qualified Data.Text as T import qualified Data.Text.IO as T@@ -52,7 +53,7 @@ -- -- The handle should be opened with an appropriate text encoding, and -- in 'IO.ReadMode' or 'IO.ReadWriteMode'.-enumHandle :: IO.Handle -> Enumerator T.Text IO b+enumHandle :: MonadIO m => IO.Handle -> Enumerator T.Text m b enumHandle h = Iteratee . loop where loop (Continue k) = withText $ \maybeText -> case maybeText of Nothing -> return $ Continue k@@ -78,7 +79,7 @@ -- -- The handle should be opened with an appropriate text encoding, and -- in 'IO.WriteMode' or 'IO.ReadWriteMode'.-iterHandle :: IO.Handle -> Iteratee T.Text IO ()+iterHandle :: MonadIO m => IO.Handle -> Iteratee T.Text m () iterHandle h = continue step where step EOF = yield () EOF step (Chunks []) = continue step
hs/Data/Enumerator/Util.hs view
@@ -1,10 +1,11 @@ module Data.Enumerator.Util where import Data.Enumerator+import Control.Monad.IO.Class (MonadIO, liftIO) import qualified Control.Exception as E -tryStep :: IO t -> (t -> IO (Step a IO b)) -> IO (Step a IO b)+tryStep :: MonadIO m => IO t -> (t -> m (Step a m b)) -> m (Step a m b) tryStep get io = do- tried <- E.try get+ tried <- liftIO (E.try get) case tried of Right t -> io t Left err -> return $ Error err