yaml-peg

dependency status documentation

A YAML 1.2 parser using a greedy parsing algorithm with PEG atoms. Support anchors, directives, positions, tags, serde, and no-std.

Inspired from yaml-rust and serde-yaml.

This parser is not ensure about YAML spec but almost functions are well-implemented. The buffer reader has also not yet been implemented, but the chunks can be read by the sub-parsers.

The anchors can be visited by the loader after parsing.

```rust use yaml_peg::{parse, node};

let doc = "

name: Bob married: true age: 46 "; let root = parse(doc).unwrap(); assert_eq!(root, vec![node!({ "name" => "Bob", "married" => true, "age" => 46, })]); ```

See the API doc for more information.

Features


+ Support [`serde`](https://github.com/serde-rs/serde) to help you serialize and deserialize a specific type. (as well as the non-cyclic anchors) rust use serde::Deserialize; use yamlpeg::serde::fromstr;

#[derive(Deserialize)] struct Member { name: String, married: bool, age: u8, }

let doc = "


name: Bob married: true age: 46 "; // Return Vec, use .remove(0) to get the first one let officer = fromstr::(doc).unwrap().remove(0); asserteq!("Bob", officer.name); assert!(officer.married); assert_eq!(46, officer.age); ```