summaryrefslogtreecommitdiff
path: root/src/html.rs
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2022-07-31 11:14:16 +0300
committerLars Wirzenius <liw@liw.fi>2022-07-31 11:22:37 +0300
commit79e4b9f695d1a25c960eb2f6a86aabe169f78a8e (patch)
tree842ce47c7e3ca66a027c81f1b49477969b074b35 /src/html.rs
parentb51e5bf01794732b61b9402eceabce457f2120c9 (diff)
downloadriki-79e4b9f695d1a25c960eb2f6a86aabe169f78a8e.tar.gz
feat: check for definition lists, and fail if found
Sponsored-by: author
Diffstat (limited to 'src/html.rs')
-rw-r--r--src/html.rs15
1 files changed, 12 insertions, 3 deletions
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) => {