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")); | 
