Crate marked_yaml

source ·
Expand description

§Marked YAML

Currently this library only supports parsing YAML from strings, but this is sufficient for most users’ purposes. We would not recommend an un-streamed processing engine for massive data anyway.

To parse some YAML you simply need to:

let node = marked_yaml::parse_yaml(0, r#"
toplevel: must be a mapping
but:
 - it
 - may
 - contain lists
and:
 mappings: are permitted
 as: sub-mappings
"#);
assert!(node.is_ok());

Parsing a valid YAML string may fail because marked_yaml adds some additional constraints:

  • The top level of the YAML MUST be a mapping.
  • Mapping keys MUST be scalars (strings).
  • Aliases and anchors MAY NOT be used (though this limit may be lifted in the future).

In addition, you can convert between marked_yaml::Node and yaml_rust::Yaml though doing so will not give you any useful markers.

Should you so choose, you may use serde to deserialise YAML strings directly into structures, any amount of which could be annotated with the Spanned type to capture information about where the value came from in the input.

let YAML = "Daniel: Author\nUser: Not Author\n";
let roles: HashMap<Spanned<String>, Spanned<String>> = from_yaml(0, YAML).unwrap();

assert_eq!(roles["Daniel"], "Author");
assert_eq!(roles["User"].span().start().copied(), Some(Marker::new(0, 2, 7)));

You do not have to have all values Spanned, and you can deserialize from an already parsed set of nodes with from_node instead.

Modules§

  • Loading YAML
  • Various basic types for YAML handling

Structs§

Enums§

  • Errorserde
    Errors which can come from deserialisation
  • Errors which can occur when deserialising from YAML
  • Errors which can occur during loading of YAML
  • A marked YAML node

Functions§

  • Deserialize some Node into the requisite type
  • Deserialize some YAML into the requisite type
  • Deserialize some YAML into the requisite type
  • Parse YAML from a string and return a Node representing the content.
  • Parse YAML from a string and return a Node representing the content. Takes an additional LoaderOptions struct to control the behavior of the loader.