mirror of
https://github.com/Llewellynvdm/exa.git
synced 2024-09-28 21:29:02 +00:00
Turn the file filter options into their own struct
This commit is contained in:
parent
827a1e11fd
commit
d4d04b7e92
@ -80,8 +80,7 @@ fn exa(options: &Options) {
|
|||||||
|
|
||||||
match Dir::readdir(&dir_path) {
|
match Dir::readdir(&dir_path) {
|
||||||
Ok(ref dir) => {
|
Ok(ref dir) => {
|
||||||
let unsorted_files = dir.files(false);
|
let files = options.transform_files(dir.files(false));
|
||||||
let files: Vec<File> = options.transform_files(unsorted_files);
|
|
||||||
|
|
||||||
// When recursing, add any directories to the dirs stack
|
// When recursing, add any directories to the dirs stack
|
||||||
// backwards: the *last* element of the stack is used each
|
// backwards: the *last* element of the stack is used each
|
||||||
|
@ -20,10 +20,15 @@ use self::Misfire::*;
|
|||||||
pub struct Options {
|
pub struct Options {
|
||||||
pub dir_action: DirAction,
|
pub dir_action: DirAction,
|
||||||
pub path_strs: Vec<String>,
|
pub path_strs: Vec<String>,
|
||||||
|
pub filter: FileFilter,
|
||||||
|
view: View,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(PartialEq, Debug, Copy)]
|
||||||
|
pub struct FileFilter {
|
||||||
reverse: bool,
|
reverse: bool,
|
||||||
show_invisibles: bool,
|
show_invisibles: bool,
|
||||||
sort_field: SortField,
|
sort_field: SortField,
|
||||||
view: View,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Options {
|
impl Options {
|
||||||
@ -65,20 +70,28 @@ impl Options {
|
|||||||
};
|
};
|
||||||
|
|
||||||
Ok(Options {
|
Ok(Options {
|
||||||
dir_action: try!(dir_action(&matches)),
|
dir_action: try!(dir_action(&matches)),
|
||||||
path_strs: if matches.free.is_empty() { vec![ ".".to_string() ] } else { matches.free.clone() },
|
path_strs: if matches.free.is_empty() { vec![ ".".to_string() ] } else { matches.free.clone() },
|
||||||
reverse: matches.opt_present("reverse"),
|
view: try!(view(&matches)),
|
||||||
show_invisibles: matches.opt_present("all"),
|
filter: FileFilter {
|
||||||
sort_field: sort_field,
|
reverse: matches.opt_present("reverse"),
|
||||||
view: try!(view(&matches)),
|
show_invisibles: matches.opt_present("all"),
|
||||||
|
sort_field: sort_field,
|
||||||
|
},
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn transform_files<'a>(&self, files: Vec<File<'a>>) -> Vec<File<'a>> {
|
||||||
|
self.filter.transform_files(files)
|
||||||
|
}
|
||||||
|
|
||||||
/// Display the files using this Option's View.
|
/// Display the files using this Option's View.
|
||||||
pub fn view(&self, dir: Option<&Dir>, files: &[File]) {
|
pub fn view(&self, dir: Option<&Dir>, files: &[File]) {
|
||||||
self.view.view(dir, files)
|
self.view.view(dir, files)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl FileFilter {
|
||||||
/// Transform the files (sorting, reversing, filtering) before listing them.
|
/// Transform the files (sorting, reversing, filtering) before listing them.
|
||||||
pub fn transform_files<'a>(&self, mut files: Vec<File<'a>>) -> Vec<File<'a>> {
|
pub fn transform_files<'a>(&self, mut files: Vec<File<'a>>) -> Vec<File<'a>> {
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user