diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/bin.rs | 2 | ||||
| -rw-r--r-- | src/renderer.rs | 2 | ||||
| -rw-r--r-- | src/renderer/html.rs | 12 | ||||
| -rw-r--r-- | src/renderer/html_tests.rs | 15 |
4 files changed, 28 insertions, 3 deletions
@@ -49,7 +49,7 @@ fn main() -> CliResult { match args.format { Format::json => render_json(&document, stdout)?, Format::xml => render_xml (&document, stdout)?, - Format::html => render_html(&document, stdout)?, + Format::html => render_html(&document, stdout, true)?, } Ok(()) } diff --git a/src/renderer.rs b/src/renderer.rs index fed670b..82a5826 100644 --- a/src/renderer.rs +++ b/src/renderer.rs @@ -1,4 +1,6 @@ mod html; +#[cfg(test)] +pub mod html_tests; use std::io::Write; diff --git a/src/renderer/html.rs b/src/renderer/html.rs index 56e3175..869444f 100644 --- a/src/renderer/html.rs +++ b/src/renderer/html.rs @@ -15,8 +15,16 @@ use crate::document_tree::{ // static FOOTNOTE_SYMBOLS: [char; 10] = ['*', '†', '‡', '§', '¶', '#', '♠', '♥', '♦', '♣']; -pub fn render_html<W>(document: &Document, mut stream: W) -> Result<(), Error> where W: Write { - document.render_html(stream.by_ref()) +pub fn render_html<W>(document: &Document, mut stream: W, standalone: bool) -> Result<(), Error> where W: Write { + if standalone { + document.render_html(stream.by_ref()) + } else { + let stream = stream.by_ref(); + for c in document.children() { + (*c).render_html(stream)?; + } + Ok(()) + } } trait HTMLRender { diff --git a/src/renderer/html_tests.rs b/src/renderer/html_tests.rs new file mode 100644 index 0000000..a91dd80 --- /dev/null +++ b/src/renderer/html_tests.rs @@ -0,0 +1,15 @@ +use pretty_assertions::assert_eq; + +use crate::parser::parse; +use super::html::render_html; + +fn check_renders_to(rst: &str, expected: &str) { + println!("Rendering:\n{}\n---", rst); + let doc = parse(rst).expect("Cannot parse"); + let mut result_data: Vec<u8> = vec![]; + render_html(&doc, &mut result_data, false).expect("Render error"); + let result = String::from_utf8(result_data).expect("Could not decode"); + assert_eq!(result.as_str().trim(), expected); +} + +include!(concat!(env!("OUT_DIR"), "/html_tests.rs")); |
