use html_streaming_editor::*; const HTML_INPUT: &str = r#"

Title

Some first text

Some more text, even with an

Third text of HTML, but no CSS

"#; #[test] fn prepend_simple_div_to_first_p_content() -> Result<(), StreamingEditorError> { let command = "EXTRACT-ELEMENT{#first-para} | PREPEND-ELEMENT{ CREATE-ELEMENT{div} }"; let mut input = Box::new(HTML_INPUT.as_bytes()); let hse = HtmlStreamingEditor::new(&mut input); let result = hse.run(command)?; let result_string = result .iter() .map(|n| n.outer_html()) .collect::>() .join(""); assert_eq!( result_string, String::from(r#"

Some first text

"#) ); Ok(()) } #[test] fn prepend_two_divs_to_first_p_content() -> Result<(), StreamingEditorError> { let command = "EXTRACT-ELEMENT{#first-para} | PREPEND-ELEMENT{ CREATE-ELEMENT{div} } | PREPEND-ELEMENT{ CREATE-ELEMENT{div} }"; let mut input = Box::new(HTML_INPUT.as_bytes()); let hse = HtmlStreamingEditor::new(&mut input); let result = hse.run(command)?; let result_string = result .iter() .map(|n| n.outer_html()) .collect::>() .join(""); assert_eq!( result_string, String::from(r#"

Some first text

"#) ); Ok(()) } #[test] fn prepend_div_with_attr_to_first_p_content() -> Result<(), StreamingEditorError> { let command = "EXTRACT-ELEMENT{#first-para} | PREPEND-ELEMENT{ CREATE-ELEMENT{div} | SET-ATTR{id ↤ 'new'} }"; let mut input = Box::new(HTML_INPUT.as_bytes()); let hse = HtmlStreamingEditor::new(&mut input); let result = hse.run(command)?; let result_string = result .iter() .map(|n| n.outer_html()) .collect::>() .join(""); assert_eq!( result_string, String::from(r#"

Some first text

"#) ); Ok(()) } #[test] fn copy_title_to_meta_tag() -> Result<(), StreamingEditorError> { let command = "FOR-EACH{head ↦ PREPEND-ELEMENT{ ↤ CREATE-ELEMENT{meta} | SET-ATTR{name ↤ 'title' } } | FOR-EACH{meta[name='title'] ↦ SET-ATTR{content ↤ QUERY-PARENT{title} | GET-TEXT-CONTENT } } }"; let mut input = Box::new( r#" This is the title

Title

"# .as_bytes(), ); let hse = HtmlStreamingEditor::new(&mut input); let result = hse.run(command)?; let result_string = result .iter() .map(|n| n.outer_html()) .collect::>() .join(""); assert_eq!( result_string, String::from( r#" This is the title

Title

"# ) ); Ok(()) }