Safe Haskell | None |
---|---|
Language | Haskell2010 |
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.
Synopsis
- 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 | |
|
Instances
Eq DecodeOptions Source # | |
Defined in Data.Csv.Parser (==) :: DecodeOptions -> DecodeOptions -> Bool # (/=) :: DecodeOptions -> DecodeOptions -> Bool # | |
Show DecodeOptions Source # | |
Defined in Data.Csv.Parser showsPrec :: Int -> DecodeOptions -> ShowS # show :: DecodeOptions -> String # showList :: [DecodeOptions] -> ShowS # |
defaultDecodeOptions :: DecodeOptions Source #
Decoding options for parsing CSV files.
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.