diff options
Diffstat (limited to 'src/html.rs')
-rw-r--r-- | src/html.rs | 9 |
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)); } |