@@ -1,14 +1,17 @@
11-- | A collection of utility functions for dealing with 'Enumerator's.
22module Network.Wai.Enumerator
3− ( -- * Lazy byte strings
3+ ( -- * Utilities
4+ mapE
5+ -- * Conversions
6+ , -- ** Lazy byte strings
47 toLBS
58 , fromLBS
69 , fromLBS'
7− -- * Source
10+ -- ** Source
811 , toSource
9− -- * Handle
12+ -- ** Handle
1013 , fromHandle
11− -- * FilePath
14+ -- ** FilePath
1215 , fromFile
1316 , fromEitherFile
1417 ) where
@@ -19,6 +22,12 @@ import qualified Data.ByteString as B
1922import System.IO.Unsafe (unsafeInterleaveIO)
2023import System.IO (withBinaryFile, IOMode (ReadMode), Handle, hIsEOF)
2124
25+-- | Performs a specified conversion on each 'B.ByteString' output by an
26+-- enumerator.
27+mapE :: (B.ByteString -> B.ByteString) -> Enumerator a -> Enumerator a
28+mapE f e iter = e iter' where
29+ iter' a = iter a . f
30+
2231-- | This uses 'unsafeInterleaveIO' to lazily read from an enumerator. All
2332-- normal lazy I/O warnings apply.
2433toLBS :: Enumerator (Maybe B.ByteString) -> IO L.ByteString