diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/error.rs | 3 | ||||
-rw-r--r-- | src/html.rs | 15 |
2 files changed, 15 insertions, 3 deletions
diff --git a/src/error.rs b/src/error.rs index a5e65e1..756d7f0 100644 --- a/src/error.rs +++ b/src/error.rs @@ -49,4 +49,7 @@ pub enum SiteError { #[error("link to missing page {1} on {0}")] PageMissing(PathBuf, PathBuf), + + #[error("attempt to use definition lists in Markdown: {0:?}")] + DefinitionList(String), } diff --git a/src/html.rs b/src/html.rs index 90bf9d5..9d048a5 100644 --- a/src/html.rs +++ b/src/html.rs @@ -134,8 +134,17 @@ pub fn parse(markdown: &str) -> Result<Element, SiteError> { } }, Event::End(tag) => match &tag { - Tag::Paragraph - | Tag::Heading(_, _, _) + Tag::Paragraph => { + trace!("at end of paragraph, looking for definition list use"); + let e = stack.pop(); + let s = as_plain_text(e.children()); + trace!("paragraph text: {:?}", s); + if s.starts_with(": ") || s.contains("\n: ") { + return Err(SiteError::DefinitionList(s)); + } + stack.append_child(Content::Elt(e)); + } + Tag::Heading(_, _, _) | Tag::List(_) | Tag::Item | Tag::Link(_, _, _) @@ -162,7 +171,7 @@ pub fn parse(markdown: &str) -> Result<Element, SiteError> { } Event::Html(s) => stack.append_child(Content::Html(s.to_string())), Event::FootnoteReference(s) => trace!("footnote ref {:?}", s), - Event::SoftBreak => stack.append_str(" "), + Event::SoftBreak => stack.append_str("\n"), Event::HardBreak => stack.append_element(Element::new(ElementTag::Br)), Event::Rule => stack.append_element(Element::new(ElementTag::Hr)), Event::TaskListMarker(done) => { |