build-type: Simple cabal-version: >= 1.8 name: simple-pipe version: 0.0.0.11 stability: Experimental author: Yoshikuni Jujo maintainer: Yoshikuni Jujo homepage: https://github.com/YoshikuniJujo/simple-pipe/wiki license: BSD3 license-file: LICENSE category: Data synopsis: simple pipeline library like conduit description: . examples/upperFile.hs . * read file (sample.txt) . * take 3 lines . * to upper all lines . * write to stdout . extensions . . * PackageImports . > import Data.Pipe > import Data.Char > import System.IO > import "monads-tf" Control.Monad.Trans > > main :: IO () > main = do > _ <- runPipe $ readFileP "sample.txt" > =$= takeP 3 > =$= convert (map toUpper) > =$= writeString > return () > > readFileP :: FilePath -> Pipe () String IO () > readFileP fp = bracket (openFile fp ReadMode) hClose hRead > > hRead :: Handle -> Pipe () String IO () > hRead h = do > eof <- lift $ hIsEOF h > if eof then return () else do > l <- lift $ hGetLine h > yield l > hRead h > > writeString :: Pipe String () IO () > writeString = do > ms <- await > case ms of > Just s -> lift (putStrLn s) >> writeString > _ -> return () > > convert :: Monad m => (a -> b) -> Pipe a b m () > convert f = do > mx <- await > case mx of > Just x -> yield (f x) >> convert f > _ -> return () > > takeP :: Monad m => Int -> Pipe a a m () > takeP 0 = return () > takeP n = do > mx <- await > case mx of > Just x -> yield x >> takeP (n - 1) > _ -> return () . extra-source-files: examples/upperFile.hs source-repository head type: git location: git://github.com/YoshikuniJujo/simple-pipe.git source-repository this type: git location: git://github.com/YoshikuniJujo/simple-pipe.git tag: simple-pipe-0.0.0.11 library hs-source-dirs: src exposed-modules: Data.Pipe, Data.Pipe.List, Data.Pipe.IO, Data.Pipe.ByteString build-depends: base == 4.*, monad-control == 0.3.*, lifted-base == 0.2.*, monads-tf == 0.1.*, bytestring == 0.10.* ghc-options: -Wall