245 lines
9.0 KiB
Plaintext
245 lines
9.0 KiB
Plaintext
|
Name: io-streams
|
||
|
Version: 1.5.1.0
|
||
|
x-revision: 1
|
||
|
License: BSD3
|
||
|
License-file: LICENSE
|
||
|
Category: Data, Network, IO-Streams
|
||
|
Build-type: Simple
|
||
|
Maintainer: Gregory Collins <greg@gregorycollins.net>
|
||
|
Cabal-version: >= 1.10
|
||
|
Synopsis: Simple, composable, and easy-to-use stream I/O
|
||
|
Tested-With: GHC==7.4.2, GHC==7.6.3, GHC==7.8.4, GHC==7.10.3,
|
||
|
GHC==8.0.2, GHC==8.2.2, GHC==8.4.3, GHC==8.6.3
|
||
|
Bug-Reports: https://github.com/snapframework/io-streams/issues
|
||
|
Description:
|
||
|
/Overview/
|
||
|
.
|
||
|
The io-streams library contains simple and easy-to-use primitives for I/O
|
||
|
using streams. Most users will want to import the top-level convenience
|
||
|
module "System.IO.Streams", which re-exports most of the library:
|
||
|
.
|
||
|
@
|
||
|
import System.IO.Streams (InputStream, OutputStream)
|
||
|
import qualified System.IO.Streams as Streams
|
||
|
@
|
||
|
.
|
||
|
For first-time users, @io-streams@ comes with an included tutorial, which can
|
||
|
be found in the "System.IO.Streams.Tutorial" module.
|
||
|
.
|
||
|
/Features/
|
||
|
.
|
||
|
The @io-streams@ user API has two basic types: @InputStream a@ and
|
||
|
@OutputStream a@, and three fundamental I/O primitives:
|
||
|
.
|
||
|
@
|
||
|
\-\- read an item from an input stream
|
||
|
Streams.read :: InputStream a -> IO (Maybe a)
|
||
|
.
|
||
|
\-\- push an item back to an input stream
|
||
|
Streams.unRead :: a -> InputStream a -> IO ()
|
||
|
.
|
||
|
\-\- write to an output stream
|
||
|
Streams.write :: Maybe a -> OutputStream a -> IO ()
|
||
|
@
|
||
|
.
|
||
|
Streams can be transformed by composition and hooked together with provided combinators:
|
||
|
.
|
||
|
@
|
||
|
ghci> Streams.fromList [1,2,3::Int] >>= Streams.map (*10) >>= Streams.toList
|
||
|
[10,20,30]
|
||
|
@
|
||
|
.
|
||
|
Stream composition leaves the original stream accessible:
|
||
|
.
|
||
|
@
|
||
|
ghci> input \<- Streams.fromByteString \"long string\"
|
||
|
ghci> wrapped \<- Streams.takeBytes 4 input
|
||
|
ghci> Streams.read wrapped
|
||
|
Just \"long\"
|
||
|
ghci> Streams.read wrapped
|
||
|
Nothing
|
||
|
ghci> Streams.read input
|
||
|
Just \" string\"
|
||
|
@
|
||
|
.
|
||
|
Simple types and operations in the IO monad mean straightforward and simple
|
||
|
exception handling and resource cleanup using Haskell standard library
|
||
|
facilities like 'Control.Exception.bracket'.
|
||
|
.
|
||
|
@io-streams@ comes with:
|
||
|
.
|
||
|
* functions to use files, handles, concurrent channels, sockets, lists,
|
||
|
vectors, and more as streams.
|
||
|
.
|
||
|
* a variety of combinators for wrapping and transforming streams, including
|
||
|
compression and decompression using zlib, controlling precisely how many
|
||
|
bytes are read from or written to a stream, buffering output using
|
||
|
bytestring builders, folds, maps, filters, zips, etc.
|
||
|
.
|
||
|
* support for parsing from streams using @attoparsec@.
|
||
|
.
|
||
|
* support for spawning processes and communicating with them using streams.
|
||
|
|
||
|
Extra-Source-Files: CONTRIBUTORS README.md changelog.md
|
||
|
|
||
|
Flag NoInteractiveTests
|
||
|
Description: Do not run interactive tests
|
||
|
Default: False
|
||
|
|
||
|
------------------------------------------------------------------------------
|
||
|
Library
|
||
|
hs-source-dirs: src
|
||
|
Default-language: Haskell2010
|
||
|
|
||
|
ghc-options: -Wall -fwarn-tabs -funbox-strict-fields
|
||
|
-fno-warn-unused-do-bind
|
||
|
|
||
|
Exposed-modules: System.IO.Streams,
|
||
|
System.IO.Streams.Attoparsec,
|
||
|
System.IO.Streams.Attoparsec.ByteString,
|
||
|
System.IO.Streams.Attoparsec.Text,
|
||
|
System.IO.Streams.Builder,
|
||
|
System.IO.Streams.ByteString,
|
||
|
System.IO.Streams.Combinators,
|
||
|
System.IO.Streams.Concurrent,
|
||
|
System.IO.Streams.Core,
|
||
|
System.IO.Streams.Debug,
|
||
|
System.IO.Streams.Handle,
|
||
|
System.IO.Streams.File,
|
||
|
System.IO.Streams.List,
|
||
|
System.IO.Streams.Network,
|
||
|
System.IO.Streams.Process,
|
||
|
System.IO.Streams.Text,
|
||
|
System.IO.Streams.Vector,
|
||
|
System.IO.Streams.Zlib,
|
||
|
System.IO.Streams.Internal,
|
||
|
System.IO.Streams.Tutorial
|
||
|
|
||
|
Other-modules: System.IO.Streams.Internal.Attoparsec,
|
||
|
System.IO.Streams.Internal.Network,
|
||
|
System.IO.Streams.Internal.Search
|
||
|
|
||
|
Build-depends: base >= 4 && <5,
|
||
|
attoparsec >= 0.10 && <0.14,
|
||
|
bytestring >= 0.9 && <0.11,
|
||
|
bytestring-builder >= 0.10 && <0.11,
|
||
|
network >= 2.3 && <3.2,
|
||
|
primitive >= 0.2 && <0.8,
|
||
|
process >= 1.1 && <1.7,
|
||
|
text >= 0.10 && <1.3,
|
||
|
time >= 1.2 && <1.10,
|
||
|
transformers >= 0.2 && <0.6,
|
||
|
vector >= 0.7 && <0.13,
|
||
|
zlib-bindings >= 0.1 && <0.2
|
||
|
|
||
|
if impl(ghc >= 7.2)
|
||
|
other-extensions: Trustworthy
|
||
|
|
||
|
other-extensions:
|
||
|
BangPatterns,
|
||
|
CPP,
|
||
|
DeriveDataTypeable,
|
||
|
FlexibleContexts,
|
||
|
FlexibleInstances,
|
||
|
GeneralizedNewtypeDeriving,
|
||
|
MultiParamTypeClasses,
|
||
|
OverloadedStrings,
|
||
|
RankNTypes,
|
||
|
TypeSynonymInstances
|
||
|
|
||
|
|
||
|
------------------------------------------------------------------------------
|
||
|
Test-suite testsuite
|
||
|
Type: exitcode-stdio-1.0
|
||
|
hs-source-dirs: src test
|
||
|
Main-is: TestSuite.hs
|
||
|
Default-language: Haskell2010
|
||
|
|
||
|
Other-modules: System.IO.Streams.Tests.Attoparsec.ByteString,
|
||
|
System.IO.Streams.Tests.Attoparsec.Text,
|
||
|
System.IO.Streams.Tests.Builder,
|
||
|
System.IO.Streams.Tests.ByteString,
|
||
|
System.IO.Streams.Tests.Combinators,
|
||
|
System.IO.Streams.Tests.Common,
|
||
|
System.IO.Streams.Tests.Concurrent,
|
||
|
System.IO.Streams.Tests.Debug,
|
||
|
System.IO.Streams.Tests.File,
|
||
|
System.IO.Streams.Tests.Handle,
|
||
|
System.IO.Streams.Tests.Internal,
|
||
|
System.IO.Streams.Tests.List,
|
||
|
System.IO.Streams.Tests.Network,
|
||
|
System.IO.Streams.Tests.Process,
|
||
|
System.IO.Streams.Tests.Text,
|
||
|
System.IO.Streams.Tests.Vector,
|
||
|
System.IO.Streams.Tests.Zlib,
|
||
|
System.IO.Streams,
|
||
|
System.IO.Streams.Attoparsec.ByteString,
|
||
|
System.IO.Streams.Attoparsec.Text,
|
||
|
System.IO.Streams.Builder,
|
||
|
System.IO.Streams.ByteString,
|
||
|
System.IO.Streams.Combinators,
|
||
|
System.IO.Streams.Concurrent,
|
||
|
System.IO.Streams.Core,
|
||
|
System.IO.Streams.Debug,
|
||
|
System.IO.Streams.Handle,
|
||
|
System.IO.Streams.File,
|
||
|
System.IO.Streams.List,
|
||
|
System.IO.Streams.Network,
|
||
|
System.IO.Streams.Process,
|
||
|
System.IO.Streams.Text,
|
||
|
System.IO.Streams.Vector,
|
||
|
System.IO.Streams.Zlib,
|
||
|
System.IO.Streams.Internal,
|
||
|
System.IO.Streams.Internal.Attoparsec,
|
||
|
System.IO.Streams.Internal.Network,
|
||
|
System.IO.Streams.Internal.Search
|
||
|
|
||
|
|
||
|
ghc-options: -Wall -fwarn-tabs -funbox-strict-fields -threaded
|
||
|
-fno-warn-unused-do-bind
|
||
|
ghc-prof-options: -auto-all
|
||
|
|
||
|
if !os(windows) && !flag(NoInteractiveTests)
|
||
|
cpp-options: -DENABLE_PROCESS_TESTS
|
||
|
|
||
|
Build-depends: base,
|
||
|
attoparsec,
|
||
|
bytestring,
|
||
|
bytestring-builder,
|
||
|
deepseq >= 1.2 && <1.5,
|
||
|
directory >= 1.1 && <2,
|
||
|
filepath >= 1.2 && <2,
|
||
|
mtl >= 2 && <3,
|
||
|
network,
|
||
|
primitive,
|
||
|
process,
|
||
|
text,
|
||
|
time,
|
||
|
transformers,
|
||
|
vector,
|
||
|
zlib-bindings,
|
||
|
|
||
|
HUnit >= 1.2 && <2,
|
||
|
QuickCheck >= 2.3.0.2 && <3,
|
||
|
test-framework >= 0.6 && <0.9,
|
||
|
test-framework-hunit >= 0.2.7 && <0.4,
|
||
|
test-framework-quickcheck2 >= 0.2.12.1 && <0.4,
|
||
|
zlib >= 0.5 && <0.7
|
||
|
|
||
|
if impl(ghc >= 7.2)
|
||
|
other-extensions: Trustworthy
|
||
|
|
||
|
other-extensions:
|
||
|
BangPatterns,
|
||
|
CPP,
|
||
|
DeriveDataTypeable,
|
||
|
FlexibleInstances,
|
||
|
GeneralizedNewtypeDeriving,
|
||
|
MultiParamTypeClasses,
|
||
|
OverloadedStrings,
|
||
|
RankNTypes
|
||
|
|
||
|
source-repository head
|
||
|
type: git
|
||
|
location: https://github.com/snapframework/io-streams.git
|