diff options
author | Jiayi Zhao <jeff.no.zhao@gmail.com> | 2019-04-19 13:35:41 -0400 |
---|---|---|
committer | Jiayi Zhao <jeff.no.zhao@gmail.com> | 2019-04-19 13:35:41 -0400 |
commit | 97434b87b049a8567dc65adc3756ac6f13a36940 (patch) | |
tree | db90cbc7f5d5223fab071b6c4640da2fdba7be15 | |
parent | 7ca4a71f510fc375dd1ba7587db52fd2a6683c32 (diff) |
add getting path selection methods to JoshutoDirList
-rw-r--r-- | src/commands/set_mode.rs | 2 | ||||
-rw-r--r-- | src/sort.rs | 8 | ||||
-rw-r--r-- | src/structs.rs | 13 |
3 files changed, 20 insertions, 3 deletions
diff --git a/src/commands/set_mode.rs b/src/commands/set_mode.rs index a79c72e..c4699e0 100644 --- a/src/commands/set_mode.rs +++ b/src/commands/set_mode.rs @@ -61,7 +61,7 @@ impl SetMode { unix::set_mode(entry.path.as_path(), mode); entry.metadata.permissions.set_mode(mode + (1 << 15)); true - }, + } None => false, } } diff --git a/src/sort.rs b/src/sort.rs index 19be763..d40016a 100644 --- a/src/sort.rs +++ b/src/sort.rs @@ -30,11 +30,15 @@ impl SortOption { } else { natural_sort_case_insensitive } - }, + } SortType::SortMtime => mtime_sort, }; - let rev_cmp = if self.reverse { reverse_ordering } else { dummy_reverse }; + let rev_cmp = if self.reverse { + reverse_ordering + } else { + dummy_reverse + }; let dir_cmp = if self.directories_first { dir_first } else { diff --git a/src/structs.rs b/src/structs.rs index c162c73..fb5bd8f 100644 --- a/src/structs.rs +++ b/src/structs.rs @@ -165,6 +165,19 @@ impl JoshutoDirList { Ok(()) } + pub fn selected_entries<'a>(&'a self) -> impl Iterator<Item = &'a JoshutoDirEntry> { + self.contents.iter().filter(|entry| entry.selected) + } + + pub fn get_selected_paths(&self) -> Option<Vec<PathBuf>> { + let vec: Vec<PathBuf> = self.selected_entries().map(|e| e.path.clone()).collect(); + if !vec.is_empty() { + Some(vec) + } else { + Some(vec![self.get_curr_ref()?.path.clone()]) + } + } + pub fn get_curr_ref(&self) -> Option<&JoshutoDirEntry> { self.get_curr_ref_(self.index?) } |