CSV decoding, heavily inspired by url-parser.
Note this library does not include an underlying CSV parser. It assumes you
are using something like periodic/elm-csv or
lovasoa/elm-csv to get from String to Csv, where
Csv is:
type alias Csv =
{ headers : List String
, records : List (List String)
}This library gets you the rest of the way, to a list of your own types. It also collects errors together with the index of the record they occurred on.
You can think of this as analogous to Json.Decode. It lets you declaratively
convert data from an intermediate representation (Json.Value or Csv) into
your own types.
Using periodic/elm-csv (which returns a Result (List String) Csv):
Csv.parse rawData |> Csv.Decode.decode myDecoderUsing lovasoa/elm-csv (which returns a plain Csv):
Csv.parse rawData |> Csv.Decode.decodeCsv myDecoderYou can define decoders based on field position or on header name. See examples in the docs.