mirror of
https://github.com/Llewellynvdm/exa.git
synced 2024-12-30 19:39:09 +00:00
added icons for video/audio/images
remove unnecessary clone
This commit is contained in:
parent
fd553227f0
commit
c448b3747f
@ -8,6 +8,7 @@ use ansi_term::Style;
|
||||
|
||||
use fs::File;
|
||||
use output::file_name::FileColours;
|
||||
use output::icons::FileIcon;
|
||||
|
||||
|
||||
#[derive(Debug, Default, PartialEq)]
|
||||
@ -115,3 +116,16 @@ impl FileColours for FileExtensions {
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
impl FileIcon for FileExtensions {
|
||||
fn icon_file(&self, file: &File) -> Option<char> {
|
||||
use output::icons::Icons;
|
||||
|
||||
Some(match file {
|
||||
f if self.is_music(f) || self.is_lossless(f) => Icons::Audio.value(),
|
||||
f if self.is_image(f) => Icons::Image.value(),
|
||||
f if self.is_video(f) => Icons::Video.value(),
|
||||
_ => return None,
|
||||
})
|
||||
}
|
||||
}
|
||||
|
@ -1,7 +1,28 @@
|
||||
use ansi_term::Style;
|
||||
use fs::File;
|
||||
use info::filetype::FileExtensions;
|
||||
use 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
|
||||
@ -21,15 +42,15 @@ pub fn painted_icon(file: &File, style: &FileStyle) -> String {
|
||||
}
|
||||
|
||||
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 {
|
||||
// possible unnecessary clone
|
||||
if let Some(ext) = file.ext.clone() {
|
||||
if let Some(ext) = file.ext.as_ref() {
|
||||
match ext.as_str() {
|
||||
"ai" => '\u{e7b4}',
|
||||
"android" => '\u{e70e}',
|
||||
"apple" => '\u{f179}',
|
||||
"audio" => '\u{f001}',
|
||||
"avro" => '\u{e60b}',
|
||||
"c" => '\u{e61e}',
|
||||
"clj" => '\u{e768}',
|
||||
@ -52,7 +73,6 @@ fn icon(file: &File) -> char {
|
||||
"go" => '\u{e626}',
|
||||
"hs" => '\u{e777}',
|
||||
"html" => '\u{f13b}',
|
||||
"image" => '\u{f1c5}',
|
||||
"iml" => '\u{e7b5}',
|
||||
"java" => '\u{e204}',
|
||||
"js" => '\u{e74e}',
|
||||
@ -87,7 +107,6 @@ fn icon(file: &File) -> char {
|
||||
"txt" => '\u{f15c}',
|
||||
"video" => '\u{f03d}',
|
||||
"vim" => '\u{e62b}',
|
||||
"windows" => '\u{f17a}',
|
||||
"xls" => '\u{f1c3}',
|
||||
"xml" => '\u{e619}',
|
||||
"yml" => '\u{f481}',
|
||||
|
Loading…
Reference in New Issue
Block a user