Skip to content

terezka/yaml

master
Switch branches/tags
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 
 
 
 
 
 
 

YAML in Elm

This package helps you convert between Elm values and YAML values.

Example

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!

Work in progress

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!

About

Work with YAML in Elm.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages