sv: Encode and decode separated values (CSV, PSV, ...)

This is a package candidate release! Here you can preview how this package release will appear once published to the main package index (which can be accomplished via the 'maintain' link below). Please note that once a package has been published to the main package index it cannot be undone! Please consult the package uploading documentation for more information.

[maintain] [Publish]

sv (separated values) is a library for parsing, decoding, encoding, and printing CSV and similar formats (such as PSV, TSV, and many more).

sv uses an Applicative combinator style for decoding and encoding, rather than a type class based approach. This means we can have multiple decoders for the same type, multiple combinators of the same type, and we never have to worry about orphan instances. These decoders can be stiched together from provided primitives and combinators, or you can build one from a parser from your favourite parser combinator library.

sv returns values for all errors that occur - not just the first. Errors have more structure than just a string, indicating what went wrong.

sv's parser is exposed so you can use it independently of the decoding, and encoding and printing are similarly standalone.

sv focuses on correctness, on flexible and composable data types, and on useful and informative error values. Speed is also important to us, but it is not as important as these other qualities.

sv tries not to be opinionated about how your data should look. We intend for the user to have a great degree of freedom to build the right decoder for their dataset.

Parts of sv are intended to be imported as follows:

import Data.Sv
import qualified Data.Sv.Decode as D
import qualified Data.Sv.Encode as E

Examples:

Properties

Versions 0.1, 0.1, 1.0, 1.1, 1.1.1, 1.2, 1.3, 1.3.0.1, 1.3.1, 1.4, 1.4.0.1
Change log changelog.md
Dependencies ansi-wl-pprint (>=0.6.6 && <0.7), attoparsec (>=0.12.1.4 && <0.14), base (>=4.8 && <5), bifunctors (>=5.1 && <6), bytestring (>=0.9.1.10 && <0.11), charset (>=0.3 && <=0.4), containers (>=0.4 && <0.6), contravariant (>=1.2 && <1.5), deepseq (>=1.1 && <1.5), lens (>=4 && <5), mtl (>=2.0.1 && <2.3), parsec (>=3.1 && <3.2), parsers (>=0.12 && <0.13), profunctors (>=5.2.1 && <6), readable (>=0.3 && <0.4), semigroupoids (>=5 && <6), semigroups (>=0.18 && <0.19), text (>=1.0 && <1.3), transformers (>=0.2 && <0.6), trifecta (>=1.5 && <1.8), utf8-string (>=1 && <1.1), validation (>=1 && <1.1), vector (>=0.10 && <0.13), void (>=0.6 && <1) [details]
License BSD-3-Clause
Copyright Copyright (c) 2017-2018, Commonwealth Scientific and Industrial Research Organisation (CSIRO) ABN 41 687 119 230.
Author George Wilson
Maintainer george@qfpl.io
Category CSV, Text, Web
Home page https://github.com/qfpl/sv
Bug tracker https://github.com/qfpl/sv/issues
Source repo head: git clone git@github.com/qfpl/sv.git
Uploaded by qfpl at 2018-03-06T06:10:19Z

Modules

[Index]

Downloads

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees