diff options
Diffstat (limited to 'src/wikitext.rs')
-rw-r--r-- | src/wikitext.rs | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/src/wikitext.rs b/src/wikitext.rs index 81514f0..b78cd66 100644 --- a/src/wikitext.rs +++ b/src/wikitext.rs @@ -1,4 +1,4 @@ -use crate::directive::Directive; +use crate::directive::{Directive, Processed}; use crate::error::SiteError; use crate::page::PageMeta; use crate::site::Site; @@ -29,16 +29,17 @@ impl Snippet { Ok(()) } - pub fn process(&self, site: &mut Site, meta: &mut PageMeta) -> Result<String, SiteError> { + pub fn process(&self, site: &mut Site, meta: &mut PageMeta) -> Result<Processed, SiteError> { trace!("Snippet::process: self={:?}", self); - let s = match self { - Snippet::Markdown(text) => text.into(), + let processed = match self { + Snippet::Markdown(text) => Processed::Markdown(text.into()), Snippet::WikiLink(w) => { let resolved = site .resolve(meta.path(), Path::new(w.target())) .map_err(|e| SiteError::PageProblem(meta.path().into(), Box::new(e)))?; trace!("resolved {} to {}", w.target(), resolved.display()); - format!("[{}]({})", w.link_text(), resolved.display()) + let link = format!("[{}]({})", w.link_text(), resolved.display()); + Processed::Markdown(link) } Snippet::Directive(p) => { let e = Directive::try_from(p); @@ -47,13 +48,14 @@ impl Snippet { .map_err(|e| SiteError::PageProblem(meta.path().into(), Box::new(e)))? } else if let Some(shortcut) = site.shortcut(p.name()) { let arg = p.unnamed_args().first().unwrap().to_string(); - format!("[{}]({})", shortcut.desc(&arg), shortcut.url(&arg)) + let link = format!("[{}]({})", shortcut.desc(&arg), shortcut.url(&arg)); + Processed::Markdown(link) } else { return Err(e.unwrap_err()); } } }; - Ok(s) + Ok(processed) } } |