summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJiayi Zhao <jeff.no.zhao@gmail.com>2019-04-19 13:35:41 -0400
committerJiayi Zhao <jeff.no.zhao@gmail.com>2019-04-19 13:35:41 -0400
commit97434b87b049a8567dc65adc3756ac6f13a36940 (patch)
treedb90cbc7f5d5223fab071b6c4640da2fdba7be15
parent7ca4a71f510fc375dd1ba7587db52fd2a6683c32 (diff)
add getting path selection methods to JoshutoDirList
-rw-r--r--src/commands/set_mode.rs2
-rw-r--r--src/sort.rs8
-rw-r--r--src/structs.rs13
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?)
}