simple-pipe-0.0.0.17: simple-pipe.cabal
build-type: Simple
cabal-version: >= 1.8
name: simple-pipe
version: 0.0.0.17
stability: Experimental
author: Yoshikuni Jujo <PAF01143@nifty.ne.jp>
maintainer: Yoshikuni Jujo <PAF01143@nifty.ne.jp>
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 ()
>
> 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.17
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