mirror of
https://github.com/lsd-rs/lsd
synced 2025-03-04 23:17:15 +00:00
Take into account the DirOrderFlag when doing size sorting
This commit is contained in:
parent
f1275b0e60
commit
ca81a3e4b8
1 changed files with 21 additions and 3 deletions
24
src/sort.rs
24
src/sort.rs
|
@ -10,9 +10,9 @@ pub fn by_meta(a: &Meta, b: &Meta, flags: &Flags) -> Ordering {
|
|||
DirOrderFlag::Last => by_name_with_files_first(a, b, &flags),
|
||||
},
|
||||
SortFlag::Size => match flags.directory_order {
|
||||
DirOrderFlag::First => by_size(a, b, flags),
|
||||
DirOrderFlag::None => by_size(a, b, flags),
|
||||
DirOrderFlag::Last => by_size(a, b, flags),
|
||||
DirOrderFlag::First => by_size_with_dirs_first(a, b, &flags),
|
||||
DirOrderFlag::None => by_size(a, b, &flags),
|
||||
DirOrderFlag::Last => by_size_with_files_first(a, b, &flags),
|
||||
},
|
||||
SortFlag::Time => match flags.directory_order {
|
||||
DirOrderFlag::First => by_date_with_dirs_first(a, b, &flags),
|
||||
|
@ -30,6 +30,24 @@ fn by_size(a: &Meta, b: &Meta, flags: &Flags) -> Ordering {
|
|||
}
|
||||
}
|
||||
|
||||
fn by_size_with_dirs_first(a: &Meta, b: &Meta, flags: &Flags) -> Ordering {
|
||||
match (a.file_type, b.file_type) {
|
||||
(FileType::Directory { .. }, FileType::Directory { .. }) => by_size(a, b, &flags),
|
||||
(FileType::Directory { .. }, _) => Ordering::Less,
|
||||
(_, FileType::Directory { .. }) => Ordering::Greater,
|
||||
_ => by_size(a, b, &flags),
|
||||
}
|
||||
}
|
||||
|
||||
fn by_size_with_files_first(a: &Meta, b: &Meta, flags: &Flags) -> Ordering {
|
||||
match (a.file_type, b.file_type) {
|
||||
(FileType::Directory { .. }, FileType::Directory { .. }) => by_size(a, b, &flags),
|
||||
(FileType::Directory { .. }, _) => Ordering::Greater,
|
||||
(_, FileType::Directory { .. }) => Ordering::Less,
|
||||
_ => by_size(a, b, &flags),
|
||||
}
|
||||
}
|
||||
|
||||
fn by_name(a: &Meta, b: &Meta, flags: &Flags) -> Ordering {
|
||||
if flags.sort_order == SortOrder::Default {
|
||||
a.name.cmp(&b.name)
|
||||
|
|
Loading…
Add table
Reference in a new issue