use anyhow::{Context, Result}; use nondestructive::yaml; #[test] fn insert_strip1() -> Result<()> { let mut doc = yaml::from_slice("doc: test")?; let b_ty = yaml::Block::Literal(yaml::Chomp::Strip); let mut root = doc.as_mut().into_mapping_mut().context("missing root")?; root.insert_block("my_string", ["one", "two"], b_ty); assert_eq!(doc.to_string(), "doc: test\nmy_string: |-\n one\n two"); Ok(()) } #[test] fn insert_strip2() -> Result<()> { let mut doc = yaml::from_slice("\ndoc: test")?; let b_ty = yaml::Block::Literal(yaml::Chomp::Strip); let mut root = doc.as_mut().into_mapping_mut().context("missing root")?; root.insert_block("my_string", ["one", "two"], b_ty); println!("{doc}"); assert_eq!(doc.to_string(), "\ndoc: test\nmy_string: |-\n one\n two"); Ok(()) } #[test] fn insert_strip_varying() -> Result<()> { let mut doc = yaml::from_slice( " doc: test obj: title: Object obj_array: - title: Object in an array", )?; let b_ty = yaml::Block::Literal(yaml::Chomp::Strip); let mut root = doc.as_mut().into_mapping_mut().context("missing root")?; root.insert_block("my_string_outer", ["one", "two"], b_ty); let mut obj = doc .as_mut() .into_mapping_mut() .context("missing root")? .get_into_mut("obj") .context("missing root.obj")? .into_mapping_mut() .context("not an object")?; obj.insert_block("my_string_inner1", ["one", "two"], b_ty); let mut obj_arr = doc .as_mut() .into_mapping_mut() .context("missing root")? .get_into_mut("obj_array") .context("missing root.obj_array")? .into_sequence_mut() .context("not an array")? .get_into_mut(0) .context("no index 0")? .into_mapping_mut() .context("not an object")?; obj_arr.insert_block("my_string_inner2", ["one", "two"], b_ty); assert_eq!( doc.to_string(), " doc: test obj: title: Object my_string_inner1: |- one two obj_array: - title: Object in an array my_string_inner2: |- one two my_string_outer: |- one two" ); Ok(()) }