Popularity
6.7
Growing
Activity
0.0
Declining
12
2
8
Monthly Downloads: 59
Programming language: Haskell
License: BSD 3-clause "New" or "Revised" License
Latest version: v0.6.x
cassava-conduit alternatives and similar packages
Based on the "data" category.
Alternatively, view cassava-conduit alternatives based on common mentions on social networks and blogs.
-
proto-lens
API for protocol buffers using modern Haskell language and library patterns. -
microlens
A lightweight (but compatible with ‘lens’) lenses library -
msgpack
Haskell implementation of MessagePack / msgpack.org[Haskell] -
extensible
Extensible records, variants, structs, effects, tangles -
file-embed
Use Template Haskell to embed file contents directly. -
base64-bytestring
Fast base64 encoding and decoding for Haskell. -
asn1-encoding
ASN1 Raw/BER/DER/CER reader/writer in haskell -
data-category
Library of categories, with categorical constructions on them -
interpolatedstring-perl6
QuasiQuoter for Perl6-style multi-line interpolated strings with q, qq and qc support. -
buffer-builder
Haskell library for efficiently building up buffers -
language-hcl
language-hcl contains HCL (Hashicorp Configuration Language) parsers and pretty-printers for the Haskell programming language -
phone-numbers
Incomplete bindings to libphonenumber for Haskell -
finite-typelits
A type inhabited by finitely many values, indexed by type-level naturals. -
attoparsec-iteratee
An adapter to convert attoparsec Parsers into blazing-fast Iteratees -
order-statistic-tree
Order statistic tree in Haskell -
syb-with-class
Fork of http://patch-tag.com/r/Saizan/syb-with-class -
range-set-list
Memory efficient sets with continuous ranges of elements. List based implementation. -
data-structure-inferrer
A program that analyzes source code with a data-structure wildcard and suggests the right one. -
currency
Types representing standard and non-standard currencies -
filesystem-trees
Traverse and manipulate directories as lazy rose trees -
schedule-planner
Calculate an ideal schedule layout from a set of timeslots -
type-iso
Expresses isomorphic and injective relations between types. -
unamb-custom
Functional concurrency with unambiguous choice, using a custom scheduler. -
resource-pool-catchio
A high-performance striped resource pooling implementation for Haskell -
procrastinating-variable
Haskell values that cannot be evaluated immediately.
Static code analysis for 29 languages.
Your projects are multi-language. So is SonarQube analysis. Find Bugs, Vulnerabilities, Security Hotspots, and Code Smells so you can release quality code every time. Get started analyzing your projects today for free.
Promo
www.sonarqube.org
Do you think we are missing an alternative of cassava-conduit or a related project?
README
cassava-conduit

Conduit interface for cassava package
Streaming to CSV is not 100% complete at this stage, and doesn't support encoding to CSV with a header yet
Example Usage
The examples project
There is a project containing some examples of the usage, but the gist is here:
import Data.Csv
import Data.Conduit
import Data.Csv.Conduit
data InputRecord = ...
instance FromRecord InputRecord where
...
data OutputRecord = ...
instance ToRecord OutputRecord where
...
decodeOpts :: Word8 -> DecodeOptions
encodeOpts :: Word8 -> EncodeOptions
processInput :: InputRecord -> OutputRecord
-- |
-- A Conduit pipeline that streams from '../exampledata/sampleinput.psv', decodes it from a pipe seperated format,
-- processes it with 'processInput' and the encodes it to pipe seperated format and streams it out to '../exampledata/sampleoutput.psv'
-- The first time it encounters a parse error, it will stop streaming and return the error, dropping any decoded records that came through in that batch also...
--
conduitPipeline :: (MonadError CsvParseError m, MonadResource m) => m ()
conduitPipeline = sourceFile "../exampledata/sampleinput.psv" $$ fromCsv (decodeOpts $ fromIntegral $ ord '|') HasHeader =$= map processInput =$= toCsv (encodeOpts $ fromIntegral $ ord '|') =$= sinkFile "../exampledata/sampleoutput.psv"
main :: IO ()
main = do
res <- runEitherT $ bimapEitherT showError id $ runResourceT conduitPipeline
either putStrLn return res
Building the examples project
$ cd examples
$ cabal sandbox init
$ cabal sandbox add-source ../
$ cabal install --only-dependencies
$ cabal build
Building the project
./mafia build
Running Unit Tests
./mafia test