From 44e9d2b79f307d9b741a606d5acd2fe6166efa5f Mon Sep 17 00:00:00 2001 From: Philipp A Date: Sun, 1 Nov 2020 16:46:16 +0100 Subject: Implement literal blocks (#28) --- renderer/src/html.rs | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) (limited to 'renderer/src/html.rs') diff --git a/renderer/src/html.rs b/renderer/src/html.rs index bb7c42e..4244349 100644 --- a/renderer/src/html.rs +++ b/renderer/src/html.rs @@ -172,7 +172,7 @@ impl HTMLRender for e::Topic { } impl_html_render_cat!(BodyElement { Paragraph, LiteralBlock, DoctestBlock, MathBlock, Rubric, SubstitutionDefinition, Comment, Pending, Target, Raw, Image, Compound, Container, BulletList, EnumeratedList, DefinitionList, FieldList, OptionList, LineBlock, BlockQuote, Admonition, Attention, Hint, Note, Caution, Danger, Error, Important, Tip, Warning, Footnote, Citation, SystemMessage, Figure, Table }); -impl_html_render_simple!(Paragraph => p, LiteralBlock => pre, MathBlock => math, Rubric => a, Compound => p, Container => div, BulletList => ul["\n"], EnumeratedList => ol["\n"], DefinitionList => dl["\n"], FieldList => dl["\n"], OptionList => pre, LineBlock => div["\n"], BlockQuote => blockquote, Admonition => aside, Attention => aside, Hint => aside, Note => aside, Caution => aside, Danger => aside, Error => aside, Important => aside, Tip => aside, Warning => aside, Figure => figure); +impl_html_render_simple!(Paragraph => p, MathBlock => math, Rubric => a, Compound => p, Container => div, BulletList => ul["\n"], EnumeratedList => ol["\n"], DefinitionList => dl["\n"], FieldList => dl["\n"], OptionList => pre, LineBlock => div["\n"], BlockQuote => blockquote, Admonition => aside, Attention => aside, Hint => aside, Note => aside, Caution => aside, Danger => aside, Error => aside, Important => aside, Tip => aside, Warning => aside, Figure => figure); impl_html_render_simple_nochildren!(Table => table); //TODO: after implementing the table, move it to elems with children // circumvent E0119 @@ -199,6 +199,27 @@ impl HTMLRender for I where I: e::Element + a::ExtraAttributes + IM } } +impl HTMLRender for e::LiteralBlock { + fn render_html(&self, renderer: &mut HTMLRenderer) -> Result<(), Error> where W: Write { + let mut cls_iter = self.classes().iter(); + let is_code = cls_iter.next() == Some(&"code".to_owned()); + write!(renderer.stream, "
")?;
+		if is_code {  // TODO: support those classes not being at the start
+			if let Some(lang) = cls_iter.next() {
+				write!(renderer.stream, "", lang)?;
+			} else {
+				write!(renderer.stream, "")?;
+			}
+		}
+		for c in self.children() {
+			(*c).render_html(renderer)?;
+		}
+		if is_code { write!(renderer.stream, "")?; }
+		write!(renderer.stream, "
")?; + Ok(()) + } +} + impl HTMLRender for e::DoctestBlock { fn render_html(&self, _renderer: &mut HTMLRenderer) -> Result<(), Error> where W: Write { // TODO -- cgit v1.2.3