summaryrefslogtreecommitdiff
path: root/src/wikitext.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/wikitext.rs')
-rw-r--r--src/wikitext.rs14
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)
}