Rework alias system

This commit is contained in:
2017-06-04 19:40:43 +02:00
parent 48e88c3a24
commit 05e9d12881
2 changed files with 61 additions and 29 deletions

50
src/catalog.rs Normal file
View File

@@ -0,0 +1,50 @@
// (catalog_name, (username, password))
pub type CatalogDefinition<'a> = (&'a str, Login<'a>);
pub type Login<'a> = Option<(&'a str, &'a str)>;
pub static ALIASES: &[(&str, CatalogDefinition)] = &[
("DS_WS1617", ("16w-diskrete-strukturen", None)),
("EIDI_WS1617", ("eidi1-2016", Some(("eidi-2016", "PGdP.16")))),
("ERA_WS1617", ("era-2016", None)),
("GAD_SS17", ("17s-grundlagen-algorithmen-und-datenstrukturen", None)),
("LA_SS17", ("17s-lineare-algebra-fuer-informatik", None)),
// EIST is on a Nextcloud
];
pub static ALIAS_ALIASES: &[(&str, &str)] = &[
("DS", "DS_WS1617"),
("EIDI", "EIDI_WS1617"),
("ERA", "ERA_WS1617"),
("GAD", "GAD_SS17"),
("LA", "LA_SS17"),
];
pub fn resolve_alias(mut query: &str) -> Option<CatalogDefinition> {
for &(alias_alias, alias) in ALIAS_ALIASES {
if query == alias_alias {
query = alias;
}
}
for &(alias_name, def) in ALIASES {
if query == alias_name {
return Some(def);
}
}
None
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn check_alias_aliases() {
for &(alias, _) in ALIAS_ALIASES {
assert!(resolve_alias(alias).is_some());
}
}
}