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 or a sequence.
- 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§
- FromNodeError
serde
The error returned byfrom_node
- Options for loading YAML
- A marker for a YAML node
- The span for a YAML marked node
- Spanned
serde
Wrapper which can be used when deserialising data fromNode
Enums§
- Error
serde
Errors which can come from deserialisation - FromYamlError
serde
Errors which can occur when deserialising from YAML - Errors which can occur during loading of YAML
- A marked YAML node