lsd/src/icon.rs

246 lines
7.5 KiB
Rust
Raw Normal View History

use meta::Meta;
use std::collections::HashMap;
lazy_static! {
pub static ref IconsByName: HashMap<&'static str, &'static str> = {
let mut m = HashMap::new();
m.insert(".Trash", "");
m.insert(".atom", "");
m.insert(".git", "");
m.insert(".github", "");
m.insert(".rvm", "");
m.insert(".vscode", "");
m.insert("bin", "");
m.insert("config", "");
m.insert("ds_store", "");
m.insert("folder", "");
m.insert("gitconfig", "");
m.insert("gitignore", "");
m.insert("gitignore_global", "");
m.insert("gradle", "");
m.insert("hidden", "");
m.insert("include", "");
m.insert("lib", "");
m.insert("localized", "");
m.insert("node_modules", "");
m.insert("npmignore", "");
m.insert("rubydoc", "");
m.insert("yarn.lock", "");
m
};
}
lazy_static! {
pub static ref IconsByExtension: HashMap<&'static str, &'static str> = {
let mut m = HashMap::new();
m.insert("ai", "");
m.insert("apk", "");
m.insert("apk", "");
m.insert("avi", "");
m.insert("avro", "");
m.insert("bash", "");
m.insert("bash_history", "");
m.insert("bash_profile", "");
m.insert("bashrc", "");
m.insert("bat", "");
m.insert("bmp", "");
m.insert("bmp", "");
m.insert("c", "");
2018-11-25 15:40:12 +00:00
m.insert("cfg", "");
m.insert("clj", "");
m.insert("cls", "");
m.insert("coffee", "");
m.insert("conf", "");
m.insert("cpp", "");
m.insert("css", "");
m.insert("csv", "");
m.insert("d", "");
m.insert("dart", "");
m.insert("db", "");
m.insert("diff", "");
m.insert("doc", "");
m.insert("docx", "");
m.insert("docx", "");
m.insert("ds_store", "");
m.insert("ds_store", "");
m.insert("ebook", "");
m.insert("editorconfig", "");
m.insert("env", "");
m.insert("eot", "");
m.insert("eot", "");
m.insert("epub", "");
m.insert("erb", "");
m.insert("erl", "");
m.insert("exe", "");
m.insert("file", "");
m.insert("fish", "");
m.insert("flac", "");
m.insert("flac", "");
m.insert("flv", "");
m.insert("font", "");
m.insert("gdoc", "");
m.insert("gdoc", "");
m.insert("gemfile", "");
m.insert("gemspec", "");
m.insert("gform", "");
m.insert("gif", "");
m.insert("gif", "");
m.insert("git", "");
m.insert("go", "");
m.insert("gradle", "");
m.insert("gradle", "");
m.insert("gsheet", "");
m.insert("gslides", "");
m.insert("guardfile", "");
m.insert("gz", "");
m.insert("hs", "");
m.insert("htm", "");
m.insert("html", "");
m.insert("ico", "");
m.insert("ico", "");
m.insert("image", "");
m.insert("iml", "");
m.insert("ini", "");
m.insert("ipynb", "");
m.insert("jar", "");
m.insert("jar", "");
m.insert("java", "");
m.insert("jpeg", "");
m.insert("jpeg", "");
m.insert("jpg", "");
m.insert("jpg", "");
m.insert("js", "");
m.insert("json", "");
m.insert("jsx", "");
m.insert("less", "");
m.insert("lhs", "");
m.insert("lhs", "");
m.insert("license", "");
m.insert("localized", "");
m.insert("localized", "");
m.insert("lock", "");
m.insert("log", "");
m.insert("lua", "");
m.insert("m4a", "");
m.insert("m4a", "");
m.insert("markdown", "");
m.insert("md", "");
m.insert("mkd", "");
m.insert("mkv", "");
m.insert("mobi", "");
m.insert("mobi", "");
m.insert("mov", "");
m.insert("mp3", "");
m.insert("mp3", "");
m.insert("mp4", "");
m.insert("mustache", "");
m.insert("npmignore", "");
m.insert("ogg", "");
m.insert("ogg", "");
m.insert("ogv", "");
m.insert("otf", "");
m.insert("otf", "");
m.insert("pdf", "");
m.insert("php", "");
m.insert("pl", "");
m.insert("png", "");
m.insert("png", "");
m.insert("ppt", "");
m.insert("pptx", "");
m.insert("procfile", "");
m.insert("properties", "");
m.insert("psd", "");
m.insert("pxm", "");
m.insert("pxm", "");
m.insert("py", "");
m.insert("pyc", "");
m.insert("r", "");
m.insert("rakefile", "");
m.insert("rar", "");
m.insert("rb", "");
m.insert("rdata", "");
m.insert("rdb", "");
m.insert("rdoc", "");
m.insert("rdoc", "");
m.insert("rds", "");
m.insert("readme", "");
m.insert("rspec", "");
m.insert("rspec_parallel", "");
m.insert("rspec_status", "");
m.insert("rss", "");
m.insert("ru", "");
m.insert("rubydoc", "");
m.insert("sass", "");
m.insert("scala", "");
m.insert("scss", "");
m.insert("scss", "");
m.insert("sh", "");
m.insert("shell", "");
m.insert("slim", "");
m.insert("sqlite3", "");
m.insert("styl", "");
m.insert("stylus", "");
m.insert("svg", "");
m.insert("svg", "");
m.insert("tar", "");
m.insert("tex", "");
m.insert("tiff", "");
m.insert("tiff", "");
m.insert("ts", "");
m.insert("tsx", "");
m.insert("tsx", "");
m.insert("ttf", "");
m.insert("ttf", "");
m.insert("twig", "");
m.insert("txt", "");
m.insert("video", "");
m.insert("vim", "");
m.insert("wav", "");
m.insert("wav", "");
m.insert("webm", "");
m.insert("webp", "");
m.insert("webp", "");
m.insert("windows", "");
m.insert("woff", "");
m.insert("woff", "");
m.insert("woff2", "");
m.insert("woff2", "");
m.insert("xls", "");
m.insert("xlsx", "");
m.insert("xml", "");
m.insert("xul", "");
m.insert("yaml", "");
m.insert("yarn.lock", "");
m.insert("yml", "");
m.insert("zip", "");
m.insert("zsh", "");
m.insert("zsh-theme", "");
m.insert("zshrc", "");
m
};
}
pub fn from_meta(meta: &Meta) -> &'static str {
// Check the known names.
if let Some(res) = IconsByName.get(&meta.name.as_str()) {
return res.to_owned();
}
// Check the known extensions.
let extension = meta.path.extension().unwrap_or_default().to_str().unwrap();
if let Some(res) = IconsByExtension.get(extension) {
return res.to_owned();
}
// Use the default icons.
if meta.metadata.is_dir() {
""
} else {
""
}
}