The latest version of simple-pipe is 0.0.0.29-1.

simple-pipe

Version 0.0.0.29 revision 0 uploaded by YoshikuniJujo.

Package meta

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 ()
Author
Yoshikuni Jujo <PAF01143@nifty.ne.jp>
Bug reports
n/a
Category
Data
Copyright
n/a
Homepage
https://github.com/YoshikuniJujo/simple-pipe/wiki
Maintainer
Yoshikuni Jujo <PAF01143@nifty.ne.jp>
Package URL
n/a
Stability
Experimental

Components