yamlette 0.1.1

Complete and comprehensive YAML 1.2 processor, written in pure rust
Documentation
#[cfg(test)]
mod stable {
    extern crate yamlette;

    #[test]
    fn example_extra_yaml_rust() {
        let should_be = Some(
            r#"foo:
    - list1
    - list2
bar:
    - 1
    - 2.0"#,
        );

        yamlette! ( read ; should_be.as_ref ().unwrap ().clone () ; [[ {
                "foo" => [ (list1:&str), (list2:&str) ],
                "bar" => [ (unu:u8), (dua:f32) ]
        } ]] ; { book: book, result: result } );

        assert!(result.is_ok());
        assert_eq!(1, book.volumes.len());

        assert_eq!(list1, Some("list1"));
        assert_eq!(list2, Some("list2"));
        assert_eq!(unu, Some(1u8));
        assert_eq!(dua, Some(2.0));
    }

    #[test]
    fn example_extra_yaml_rust_lazy() {
        let should_be = r#"foo:
    - list1
    - list2
bar:
    - 1
    - 2.0"#;

        let mut payload = yamlette! ( init ; reader );

        yamlette! ( read ; warm ; &mut payload ; should_be ; [[ {
            "foo" => [ (list1:&str), (list2:&str) ],
            "bar" => [ (unu:u8), (dua:f32) ]
        } ]] ; {} );

        assert_eq!(list1, Some("list1"));
        assert_eq!(list2, Some("list2"));
        assert_eq!(unu, Some(1u8));
        assert_eq!(dua, Some(2.0));

        yamlette! ( read ; warm ; &mut payload ; should_be ; [[ {
            "foo" => [ (two_list1:&str), (two_list2:&str) ],
            "bar" => [ (two_unu:u8), (two_dua:f32) ]
        } ]] ; {} );

        assert_eq!(two_list1, Some("list1"));
        assert_eq!(two_list2, Some("list2"));
        assert_eq!(two_unu, Some(1u8));
        assert_eq!(two_dua, Some(2.0));
    }

    #[test]
    fn example_02_01_block() {
        let should_be = Some(
            r#"- Mark McGwire
- Sammy Sosa
- Ken Griffey
"#,
        );

        yamlette! ( read ; should_be.as_ref ().unwrap ().clone () ; [[ [ (mark:&str), (sammy:&str), (ken:&str) ] ]] ; { book: book, result: result } );

        assert!(result.is_ok());
        assert_eq!(1, book.volumes.len());

        assert_eq!(mark, Some("Mark McGwire"));
        assert_eq!(sammy, Some("Sammy Sosa"));
        assert_eq!(ken, Some("Ken Griffey"));

        let result = yamlette! ( write ; [[ [ (mark.unwrap ().to_string ()), (sammy.unwrap ().to_string ()), (ken.unwrap ().to_string ()) ] ]] ).ok ();

        assert_eq!(should_be.map(|b| b.to_string()), result);
    }

    #[test]
    fn example_02_01_block_sage() {
        let should_be = Some(
            r#"- Mark McGwire
- Sammy Sosa
- Ken Griffey
"#,
        );

        yamlette! ( sage ; should_be.as_ref ().unwrap ().clone () ; [[ [ (mark:&str), (sammy:&str), (ken:&str) ] ]] ; { book: book, result: result } );

        assert!(result.is_ok());
        assert_eq!(1, book.volumes.len());

        assert_eq!(mark, Some("Mark McGwire"));
        assert_eq!(sammy, Some("Sammy Sosa"));
        assert_eq!(ken, Some("Ken Griffey"));

        let result = yamlette! ( write ; [[ [ (mark.unwrap ().to_string ()), (sammy.unwrap ().to_string ()), (ken.unwrap ().to_string ()) ] ]] ).ok ();

        assert_eq!(should_be.map(|b| b.to_string()), result);
    }

    #[test]
    fn example_02_01_block_ignore_result() {
        let should_be = Some(
            r#"- Mark McGwire
- Sammy Sosa
- Ken Griffey
"#,
        );

        yamlette! ( read ; should_be.as_ref ().unwrap ().clone () ; [[ [ (mark:&str), (sammy:&str), (ken:&str) ] ]] );

        assert_eq!(mark, Some("Mark McGwire"));
        assert_eq!(sammy, Some("Sammy Sosa"));
        assert_eq!(ken, Some("Ken Griffey"));

        let result = yamlette! ( write ; [[ [ (mark.unwrap ().to_string ()), (sammy.unwrap ().to_string ()), (ken.unwrap ().to_string ()) ] ]] ).ok ();

        assert_eq!(should_be.map(|b| b.to_string()), result);
    }

    #[test]
    fn example_02_01_block_ignore_result_sage() {
        let should_be = Some(
            r#"- Mark McGwire
- Sammy Sosa
- Ken Griffey
"#,
        );

        yamlette! ( sage ; should_be.as_ref ().unwrap ().clone () ; [[ [ (mark:&str), (sammy:&str), (ken:&str) ] ]] );

        assert_eq!(mark, Some("Mark McGwire"));
        assert_eq!(sammy, Some("Sammy Sosa"));
        assert_eq!(ken, Some("Ken Griffey"));

        let result = yamlette! ( write ; [[ [ (mark.unwrap ().to_string ()), (sammy.unwrap ().to_string ()), (ken.unwrap ().to_string ()) ] ]] ).ok ();

        assert_eq!(should_be.map(|b| b.to_string()), result);
    }

    #[test]
    fn example_02_01_block_custom_schema() {
        let should_be = Some(
            r#"- Mark McGwire
- Sammy Sosa
- Ken Griffey
"#,
        );

        let schema = yamlette::model::schema::core::Core::new();
        let result = yamlette! ( write ; [[ [ "Mark McGwire", "Sammy Sosa", "Ken Griffey" ] ]] ; { schema: schema } ).ok ();

        assert_eq!(should_be.map(|b| b.to_string()), result);
    }

    #[test]
    fn custom_00_tagged_incognitum() {
        let should_be = Some("- !<env> Value\n");

        let value =
            yamlette::model::yamlette::incognitum::IncognitumValue::new(String::from("Value"))
                .set_tag(String::from("env"));

        let schema = yamlette::model::schema::core::Core::new();
        let result = yamlette! ( write ; [[ [ value ] ]] ; { schema: schema } ).ok();

        assert_eq!(should_be.map(|b| b.to_string()), result);
    }
}