======= NimYAML ======= Introduction ============ **NimYAML** is a pure YAML implementation for Nim. It is able to read from and write to YAML character streams, and to serialize from and construct to native Nim types. It exclusively supports `YAML 1.2 <#http://www.yaml.org/spec/1.2/spec.html>`_. Quickstart ---------- Data used in quickstart code may not be accurate and is solely used to showcase NimYAML's features. .. code-block:: nim import yaml type GenderKind* = enum male, female, other Person* = object name*: string gender*: GenderKind age*: int32 spouse*: ref Person offspring*: seq[ref Person] let input = newStringStream(""" %YAML 1.2 --- - &a name: Luke Skywalker gender: male age: 19 spouse: ~ offspring: [] - &b name: Han Solo gender: male age: 35 spouse: &c name: Leia Organa gender: female age: 19 spouse: *b offspring: [] offspring: [] - *c - name: Anakin Skywalker gender: male age: 42 spouse: ~ offspring: [*a, *c] """) var persons: seq[ref Person] load(input, persons) for person in persons: echo person.name, "\nage ", person.age if person.spouse != nil: echo "spouse: ", person.spouse.name for child in person.offspring: case child.gender of male: echo "son: ", child.name of female: echo "daughter: ", child.name of other: echo "child: ", child.name echo "------------------------" dump(persons, newFileStream(stdout))