packages feed

simple-pipe-0.0.0.5: simple-pipe.cabal

build-type:	Simple
cabal-version:	>= 1.8

name:		simple-pipe
version:	0.0.0.5
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 ()
    >
    > 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/forest.git

source-repository	this
    type:	git
    location:	git://github.com/YoshikuniJujo/forest.git
    tag:	simple-pipe-0.0.0.5

library
    hs-source-dirs:	src
    exposed-modules:	Data.Pipe, Data.Pipe.List
    build-depends:
        base == 4.*, monad-control == 0.3.*, lifted-base == 0.2.*,
        monads-tf == 0.1.*
    ghc-options:	-Wall