1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
//! Support for non-destructive YAML editing.
//!
//! YAML is parsed with [parse], which returns a [Document].
//!
//! # Examples
///
/// ```
/// use nondestructive::yaml;
///
/// let doc = yaml::parse("32")?;
/// assert_eq!(doc.root().as_u32(), Some(32));
///
/// # Ok::<_, Box<dyn std::error::Error>>(())
/// ```

#[cfg(test)]
mod tests;

#[macro_use]
mod parsing;
pub use self::parsing::Parser;

mod error;
pub use self::error::Error;

mod document;
pub use self::document::Document;

mod raw;

mod value;
pub use self::value::{NullKind, StringKind, Table, Value};

mod value_mut;
pub use self::value_mut::{TableMut, ValueMut};

/// Parse a YAML document.
pub fn parse<D>(input: D) -> Result<Document, Error>
where
    D: AsRef<[u8]>,
{
    let parser = Parser::new(input.as_ref());
    parser.parse()
}