packages feed

streamly-cassava-0.1.0.0: README.md

# streamly-cassava

Stream CSV data in\/out using
[Cassava](http://hackage.haskell.org/package/cassava).  Adapted from
[streaming-cassava](http://hackage.haskell.org/package/streaming-cassava).

For efficiency, operates on streams of strict ByteString chunks 
(i.e. `IsStream t => t m ByteString`) rather than directly on streams of Word8. 
The chunkStream function is useful for generating an input stream from a
handle.

Example usage:

```haskell
import Streamly
import qualified Streamly.Prelude as S
import Streamly.Csv (decode, encode, chunkStream)
import System.IO
import qualified Data.Csv as Csv
import qualified Data.ByteString as BS
import Data.Vector (Vector)

main = do
  h <- openFile "testfile.csv" ReadMode
  let chunks = chunkStream h (64*1024)
      recs = decode Csv.HasHeader chunks :: SerialT IO (Vector BS.ByteString)
  withFile "dest.csv" WriteMode $ \ho ->
    S.mapM_ (BS.hPut ho) $ encode Nothing recs
```