packages feed

pipes-bzip-0.1.0.0: src/Pipes/BZip.hs

module Pipes.BZip
    (
      module Codec.Compression.BZip
    , compress
    , decompress
    , compressWith
    , decompressWith
    ) where

import           Codec.Compression.BZip (CompressParams (..),
                                         DecompressParams (..),
                                         defaultCompressParams,
                                         defaultDecompressParams)
import qualified Codec.Compression.BZip as BZip
import           Control.Monad          (forever)
import           Data.ByteString        (ByteString)
import qualified Data.ByteString        as B
import qualified Data.ByteString.Lazy   as L
import           Pipes
import           Pipes.ByteString

someFunc :: IO ()
someFunc = putStrLn "someFunc"

decompress :: Monad m => Pipe ByteString ByteString m ()
decompress = forever $ do
    bs <- await
    let d = BZip.decompress (L.fromStrict bs)
    yield $ L.toStrict d

compress :: Monad m => Pipe ByteString ByteString m ()
compress = forever $ do
    bs <- await
    let d = BZip.compress (L.fromStrict bs)
    yield $ L.toStrict d

decompressWith :: Monad m => DecompressParams -> Pipe ByteString ByteString m ()
decompressWith p = forever $ do
    bs <- await
    let d = BZip.decompressWith p (L.fromStrict bs)
    yield $ L.toStrict d

compressWith :: Monad m => CompressParams -> Pipe ByteString ByteString m ()
compressWith p = forever $ do
    bs <- await
    let d = BZip.compressWith p (L.fromStrict bs)
    yield $ L.toStrict d