aboutsummaryrefslogtreecommitdiffstats
path: root/src/renderer
diff options
context:
space:
mode:
Diffstat (limited to 'src/renderer')
-rw-r--r--src/renderer/html.rs12
-rw-r--r--src/renderer/html_tests.rs15
2 files changed, 25 insertions, 2 deletions
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"));