Safe Haskell | None |
---|---|
Language | Haskell98 |
A CSV parser. The parser defined here is RFC 4180 compliant, with the following extensions:
- Empty lines are ignored.
- Non-escaped fields may contain any characters except double-quotes, commas, carriage returns, and newlines.
- Escaped fields may contain any characters (but double-quotes need to be escaped).
The functions in this module can be used to implement e.g. a resumable parser that is fed input incrementally.
- data DecodeOptions = DecodeOptions {
- decDelimiter :: !Word8
- defaultDecodeOptions :: DecodeOptions
- csv :: DecodeOptions -> Parser Csv
- csvWithHeader :: DecodeOptions -> Parser (Header, Vector NamedRecord)
- header :: Word8 -> Parser Header
- record :: Word8 -> Parser Record
- name :: Word8 -> Parser Name
- field :: Word8 -> Parser Field
Documentation
data DecodeOptions Source
Options that controls how data is decoded. These options can be used to e.g. decode tab-separated data instead of comma-separated data.
To avoid having your program stop compiling when new fields are
added to DecodeOptions
, create option records by overriding
values in defaultDecodeOptions
. Example:
myOptions = defaultDecodeOptions { decDelimiter = fromIntegral (ord '\t') }
DecodeOptions | |
|
defaultDecodeOptions :: DecodeOptions Source
Decoding options for parsing CSV files.
csv :: DecodeOptions -> Parser Csv Source
Parse a CSV file that does not include a header.
csvWithHeader :: DecodeOptions -> Parser (Header, Vector NamedRecord) Source
Parse a CSV file that includes a header.
Parse a header, including the terminating line separator.
Parse a record, not including the terminating line separator. The
terminating line separate is not included as the last record in a
CSV file is allowed to not have a terminating line separator. You
most likely want to use the endOfLine
parser in combination with
this parser.