pub const DOC: &[&str] = &["md", "txt", "pdf", "docx", "xlsx", "pptx", "html"];
pub const CODE: &[&str] = &[
"rs", "py", "go", "js", "ts", "jsx", "tsx", "java", "c", "h", "cpp", "hpp", "cs", "rb", "php",
"lua", "vue", "json", "yaml", "yml", "toml", "sh", "ps1", "bat", "sql",
];
pub const IMAGE: &[&str] = &["png", "jpg", "jpeg", "webp", "bmp"];
pub fn by_name(name: Option<&str>) -> Option<&'static [&'static str]> {
match name {
Some("doc") => Some(DOC),
Some("code") => Some(CODE),
Some("image") => Some(IMAGE),
_ => None,
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn by_name_maps_known_groups() {
assert_eq!(by_name(Some("doc")), Some(DOC));
assert_eq!(by_name(Some("code")), Some(CODE));
assert_eq!(by_name(Some("image")), Some(IMAGE));
}
#[test]
fn by_name_falls_back_to_none_for_all_or_unknown() {
assert_eq!(by_name(Some("all")), None);
assert_eq!(by_name(Some("bogus")), None);
assert_eq!(by_name(None), None);
}
}