| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194 |
- use ansi_term::Style;
- use crate::fs::File;
- use crate::info::filetype::FileExtensions;
- use crate::output::file_name::FileStyle;
- pub trait FileIcon {
- fn icon_file(&self, file: &File) -> Option<char>;
- }
- pub enum Icons {
- Audio,
- Image,
- Video,
- }
- impl Icons {
- pub fn value(&self) -> char {
- match *self {
- Icons::Audio => '\u{f001}',
- Icons::Image => '\u{f1c5}',
- Icons::Video => '\u{f03d}',
- }
- }
- }
- pub fn painted_icon(file: &File, style: &FileStyle) -> String {
- let file_icon = icon(&file).to_string();
- let painted = style.exts
- .colour_file(&file)
- .map_or(file_icon.to_string(), |c| {
- // Remove underline from icon
- if c.is_underline {
- match c.foreground {
- Some(color) => Style::from(color).paint(file_icon).to_string(),
- None => Style::default().paint(file_icon).to_string(),
- }
- } else {
- c.paint(file_icon).to_string()
- }
- });
- format!("{} ", painted)
- }
- fn icon(file: &File) -> char {
- let extensions = Box::new(FileExtensions);
- if file.is_directory() { '\u{f115}' }
- else if let Some(icon) = extensions.icon_file(file) { icon }
- else if let Some(ext) = file.ext.as_ref() {
- match ext.as_str() {
- "ai" => '\u{e7b4}',
- "android" => '\u{e70e}',
- "apple" => '\u{f179}',
- "avro" => '\u{e60b}',
- "clj" => '\u{e768}',
- "coffee" => '\u{f0f4}',
- "cpp" => '\u{e61d}',
- "hpp" => '\u{e61d}',
- "c" => '\u{e61e}',
- "h" => '\u{e61e}',
- "cs" => '\u{f81a}',
- "css" => '\u{e749}',
- "d" => '\u{e7af}',
- "dart" => '\u{e798}',
- "db" => '\u{f1c0}',
- "diff" => '\u{f440}',
- "patch" => '\u{f440}',
- "rtf" => '\u{f1c2}',
- "doc" => '\u{f1c2}',
- "docx" => '\u{f1c2}',
- "odt" => '\u{f1c2}',
- "ebook" => '\u{e28b}',
- "env" => '\u{f462}',
- "epub" => '\u{e28a}',
- "erl" => '\u{e7b1}',
- "font" => '\u{f031}',
- "gform" => '\u{f298}',
- "git" => '\u{f1d3}',
- "go" => '\u{e626}',
- "hs" => '\u{e777}',
- "htm" => '\u{f13b}',
- "html" => '\u{f13b}',
- "xhtml" => '\u{f13b}',
- "iml" => '\u{e7b5}',
- "java" => '\u{e204}',
- "js" => '\u{e74e}',
- "mjs" => '\u{e74e}',
- "json" => '\u{e60b}',
- "jsx" => '\u{e7ba}',
- "vue" => '\u{fd42}',
- "node" => '\u{f898}',
- "less" => '\u{e758}',
- "log" => '\u{f18d}',
- "lua" => '\u{e620}',
- "md" => '\u{f48a}',
- "markdown" => '\u{f48a}',
- "mustache" => '\u{e60f}',
- "npmignore" => '\u{e71e}',
- "pdf" => '\u{f1c1}',
- "djvu" => '\u{f02d}',
- "mobi" => '\u{f02d}',
- "php" => '\u{e73d}',
- "pl" => '\u{e769}',
- "ppt" => '\u{f1c4}',
- "pptx" => '\u{f1c4}',
- "odp" => '\u{f1c4}',
- "psd" => '\u{e7b8}',
- "py" => '\u{e606}',
- "r" => '\u{f25d}',
- "rb" => '\u{e21e}',
- "ru" => '\u{e21e}',
- "erb" => '\u{e21e}',
- "gem" => '\u{e21e}',
- "rdb" => '\u{e76d}',
- "rs" => '\u{e7a8}',
- "rss" => '\u{f09e}',
- "rubydoc" => '\u{e73b}',
- "sass" => '\u{e74b}',
- "stylus" => '\u{e759}',
- "scala" => '\u{e737}',
- "shell" => '\u{f489}',
- "sqlite3" => '\u{e7c4}',
- "styl" => '\u{e600}',
- "latex" => '\u{e600}',
- "tex" => '\u{e600}',
- "ts" => '\u{e628}',
- "tsx" => '\u{e628}',
- "twig" => '\u{e61c}',
- "txt" => '\u{f15c}',
- "video" => '\u{f03d}',
- "vim" => '\u{e62b}',
- "xml" => '\u{e619}',
- "yml" => '\u{f481}',
- "yaml" => '\u{f481}',
- "rar" => '\u{f410}',
- "zip" => '\u{f410}',
- "bz" => '\u{f410}',
- "bz2" => '\u{f410}',
- "xz" => '\u{f410}',
- "taz" => '\u{f410}',
- "tbz" => '\u{f410}',
- "tbz2" => '\u{f410}',
- "tz" => '\u{f410}',
- "tar" => '\u{f410}',
- "tzo" => '\u{f410}',
- "lz" => '\u{f410}',
- "lzh" => '\u{f410}',
- "lzma" => '\u{f410}',
- "lzo" => '\u{f410}',
- "gz" => '\u{f410}',
- "deb" => '\u{e77d}',
- "rpm" => '\u{e7bb}',
- "exe" => '\u{e70f}',
- "msi" => '\u{e70f}',
- "dll" => '\u{e70f}',
- "cab" => '\u{e70f}',
- "bat" => '\u{e70f}',
- "cmd" => '\u{e70f}',
- "sh" => '\u{f489}',
- "bash" => '\u{f489}',
- "zsh" => '\u{f489}',
- "fish" => '\u{f489}',
- "csh" => '\u{f489}',
- "ini" => '\u{e615}',
- "toml" => '\u{e615}',
- "cfg" => '\u{e615}',
- "conf" => '\u{e615}',
- "apk" => '\u{e70e}',
- "ttf" => '\u{f031}',
- "woff" => '\u{f031}',
- "woff2" => '\u{f031}',
- "otf" => '\u{f031}',
- "csv" => '\u{f1c3}',
- "tsv" => '\u{f1c3}',
- "xls" => '\u{f1c3}',
- "xlsx" => '\u{f1c3}',
- "ods" => '\u{f1c3}',
- "so" => '\u{f17c}',
- "sql" => '\u{f1c0}',
- "jar" => '\u{e256}',
- "jad" => '\u{e256}',
- "class" => '\u{e256}',
- "war" => '\u{e256}',
- "groovy" => '\u{e775}',
- "iso" => '\u{e271}',
- "lock" => '\u{f023}',
- "swift" => '\u{e755}',
- "nix" => '\u{f313}',
- _ => '\u{f016}'
- }
- } else {
- '\u{f016}'
- }
- }
|