summaryrefslogtreecommitdiff
path: root/src/html.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/html.rs')
-rw-r--r--src/html.rs19
1 files changed, 14 insertions, 5 deletions
diff --git a/src/html.rs b/src/html.rs
index b4e4c45..9d048a5 100644
--- a/src/html.rs
+++ b/src/html.rs
@@ -60,7 +60,7 @@ impl HtmlPage {
}
}
-pub fn parse(markdown: &str) -> Element {
+pub fn parse(markdown: &str) -> Result<Element, SiteError> {
let mut options = Options::empty();
options.insert(Options::ENABLE_HEADING_ATTRIBUTES);
options.insert(Options::ENABLE_STRIKETHROUGH);
@@ -134,8 +134,17 @@ pub fn parse(markdown: &str) -> Element {
}
},
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) -> Element {
}
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) => {
@@ -179,7 +188,7 @@ pub fn parse(markdown: &str) -> Element {
let mut body = stack.pop();
assert!(stack.is_empty());
body.fix_up_img_alt();
- body
+ Ok(body)
}
fn as_plain_text(content: &[Content]) -> String {