summaryrefslogtreecommitdiff
path: root/src/site.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/site.rs')
-rw-r--r--src/site.rs39
1 files changed, 39 insertions, 0 deletions
diff --git a/src/site.rs b/src/site.rs
index 3200b58..f1ff333 100644
--- a/src/site.rs
+++ b/src/site.rs
@@ -21,6 +21,7 @@ pub struct Site {
name_queue: Vec<Name>,
page_queue: PageSet,
whatchanged: HashMap<PathBuf, SystemTime>,
+ shortcuts: HashMap<String, Shortcut>,
}
impl Site {
@@ -41,6 +42,7 @@ impl Site {
name_queue: vec![],
page_queue: PageSet::default(),
whatchanged: HashMap::new(),
+ shortcuts: HashMap::new(),
}
}
@@ -267,6 +269,14 @@ impl Site {
}
false
}
+
+ pub fn add_shortcut(&mut self, shortcut: Shortcut) {
+ self.shortcuts.insert(shortcut.name().into(), shortcut);
+ }
+
+ pub fn shortcut(&self, name: &str) -> Option<&Shortcut> {
+ self.shortcuts.get(name)
+ }
}
#[derive(Default)]
@@ -290,6 +300,35 @@ impl PageSet {
}
}
+#[derive(Debug, Clone, Eq, PartialEq)]
+pub struct Shortcut {
+ name: String,
+ desc: String,
+ url: String,
+}
+
+impl Shortcut {
+ pub fn new(name: &str, desc: &str, url: &str) -> Self {
+ Self {
+ name: name.into(),
+ desc: desc.into(),
+ url: url.into(),
+ }
+ }
+
+ pub fn name(&self) -> &str {
+ &self.name
+ }
+
+ pub fn desc(&self, arg: &str) -> String {
+ self.desc.replace("%s", arg)
+ }
+
+ pub fn url(&self, arg: &str) -> String {
+ self.url.replace("%s", arg)
+ }
+}
+
#[cfg(test)]
mod test {
use super::{NameBuilder, Site, SiteError, WikitextPage};