summaryrefslogtreecommitdiff
path: root/src/html.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/html.rs')
-rw-r--r--src/html.rs9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/html.rs b/src/html.rs
index 9d048a5..abbe71d 100644
--- a/src/html.rs
+++ b/src/html.rs
@@ -1,6 +1,7 @@
use crate::error::SiteError;
use crate::util::mkdir;
use html_escape::{encode_double_quoted_attribute, encode_text};
+use line_col::LineColLookup;
use log::trace;
use pulldown_cmark::{Event, HeadingLevel, Options, Parser, Tag};
use std::fmt::Write as _;
@@ -66,10 +67,11 @@ pub fn parse(markdown: &str) -> Result<Element, SiteError> {
options.insert(Options::ENABLE_STRIKETHROUGH);
options.insert(Options::ENABLE_TABLES);
options.insert(Options::ENABLE_TASKLISTS);
- let p = Parser::new_ext(markdown, options);
+ let p = Parser::new_ext(markdown, options).into_offset_iter();
+ let linecol = LineColLookup::new(markdown);
let mut stack = Stack::new();
stack.push(Element::new(ElementTag::Body));
- for event in p {
+ for (event, loc) in p {
trace!("event {:?}", event);
match event {
Event::Start(tag) => match tag {
@@ -140,7 +142,8 @@ pub fn parse(markdown: &str) -> Result<Element, SiteError> {
let s = as_plain_text(e.children());
trace!("paragraph text: {:?}", s);
if s.starts_with(": ") || s.contains("\n: ") {
- return Err(SiteError::DefinitionList(s));
+ let (line, col) = linecol.get(loc.start);
+ return Err(SiteError::DefinitionList(line, col));
}
stack.append_child(Content::Elt(e));
}