This package helps you convert between Elm values and YAML values.
Say you have some YAML which looks like this:
---
- name:
first: Marie
last: Curie
occupation: [ chemist, physicist ]
nationality: Polish
- name:
first: Alva
last: Myrdal
occupation: [ sociologist, diplomat, politician ]
nationality: Swedish
- name:
first: Svetlana
last: Alexievich
occupation: [ journalist, historian ]
nationality: Belarusian
... to decode this, you could write
module Woman exposing (Woman, decoder)
import Yaml.Decode
type alias Woman =
{ firstName : String
, lastName : String
, occupation : List String
, nationality : String
}
decoder : Yaml.Decode.Decoder Woman
decoder =
Yaml.Decode.map4 Woman
(Yaml.Decode.at [ "name", "first" ] Yaml.Decode.string)
(Yaml.Decode.at [ "name", "last" ] Yaml.Decode.string)
(Yaml.Decode.field "occupation" (Yaml.Decode.list Yaml.Decode.string))
(Yaml.Decode.field "nationality" Yaml.Decode.string)
and run your decoder with Yaml.Decode.fromString (Yaml.Decode.list Woman.decoder) yamlString!
This package was build to be able to parse data like this, and even if it has a few more features (multiline strings, comments) than necessary to parse that file, YAML is a large and complex format, and this parser is still missing a lot of YAML features like references and various logical operations. It is also missing Yaml.Encode!