Copyright | © 2016–2018 Stack Builders |
---|---|
License | MIT |
Maintainer | Mark Karpov <markkarpov92@gmail.org> |
Stability | experimental |
Portability | portable |
Safe Haskell | None |
Language | Haskell2010 |
A CSV parser. The parser here is RFC 4180 compliant, with the following extensions:
- Non-escaped fields may contain any characters except double-quotes, commas (or generally delimiter characters), carriage returns, and newlines.
- Escaped fields may contain any characters, but double-quotes need to be escaped.
The parser provides better error messages than the parser that comes with Cassava library, while being compatible with the rest of the library.
Synopsis
- newtype ConversionError = ConversionError String
- decode :: FromRecord a => HasHeader -> FilePath -> ByteString -> Either (ParseErrorBundle ByteString ConversionError) (Vector a)
- decodeWith :: FromRecord a => DecodeOptions -> HasHeader -> FilePath -> ByteString -> Either (ParseErrorBundle ByteString ConversionError) (Vector a)
- decodeByName :: FromNamedRecord a => FilePath -> ByteString -> Either (ParseErrorBundle ByteString ConversionError) (Header, Vector a)
- decodeByNameWith :: FromNamedRecord a => DecodeOptions -> FilePath -> ByteString -> Either (ParseErrorBundle ByteString ConversionError) (Header, Vector a)
Documentation
newtype ConversionError Source #
Custom error component for CSV parsing. It allows typed reporting of conversion errors.
Instances
:: FromRecord a | |
=> HasHeader | Whether the data contains header that should be skipped |
-> FilePath | File name (only for displaying in parse error messages, use empty string if you have none) |
-> ByteString | CSV data |
-> Either (ParseErrorBundle ByteString ConversionError) (Vector a) |
Deserialize CSV records form a lazy ByteString
. If this fails due
to incomplete or invalid input, Left
is returned. Equivalent to
decodeWith
defaultDecodeOptions
.
:: FromRecord a | |
=> DecodeOptions | Decoding options |
-> HasHeader | Whether the data contains header that should be skipped |
-> FilePath | File name (only for displaying in parse error messages, use empty string if you have none) |
-> ByteString | CSV data |
-> Either (ParseErrorBundle ByteString ConversionError) (Vector a) |
Like decode
, but lets you customize how the CSV data is parsed.
:: FromNamedRecord a | |
=> FilePath | File name (only for displaying in parse error messages, use empty string if you have none) |
-> ByteString | CSV data |
-> Either (ParseErrorBundle ByteString ConversionError) (Header, Vector a) |
Deserialize CSV records from a lazy ByteString
. If this fails due
to incomplete or invalid input, Left
is returned. The data is assumed
to be preceded by a header. Equivalent to decodeByNameWith
defaultDecodeOptions
.
:: FromNamedRecord a | |
=> DecodeOptions | Decoding options |
-> FilePath | File name (only for displaying in parse error messages, use empty string if you have none) |
-> ByteString | CSV data |
-> Either (ParseErrorBundle ByteString ConversionError) (Header, Vector a) |
Like decodeByName
, but lets you customize how the CSV data is parsed.