diff options
Diffstat (limited to 'src/wikitext.rs')
-rw-r--r-- | src/wikitext.rs | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/src/wikitext.rs b/src/wikitext.rs index b425021..91ac30b 100644 --- a/src/wikitext.rs +++ b/src/wikitext.rs @@ -9,7 +9,7 @@ use std::path::Path; pub enum Snippet { Markdown(String), WikiLink(WikiLink), - Directive(Directive), + Directive(ParsedDirective), } impl Snippet { @@ -22,7 +22,17 @@ impl Snippet { trace!("resolved {} to {}", w.target(), resolved.display()); format!("[{}]({})", w.link_text(), resolved.display()) } - Snippet::Directive(d) => d.process(site, meta)?, + Snippet::Directive(p) => { + let e = Directive::try_from(p); + if let Ok(d) = e { + d.process(site, meta)? + } else if let Some(shortcut) = site.shortcut(p.name()) { + let arg = p.unnamed_args().get(0).unwrap().to_string(); + format!("[{}]({})", shortcut.desc(&arg), shortcut.url(&arg)) + } else { + return Err(e.unwrap_err()); + } + } }; Ok(s) } |