Skip to content

Commit

Permalink
move sorted_entries closer to where it is used
Browse files Browse the repository at this point in the history
  • Loading branch information
Sebastian Thiel committed Jun 5, 2019
1 parent b0a02d3 commit 50438ef
Show file tree
Hide file tree
Showing 5 changed files with 55 additions and 48 deletions.
39 changes: 0 additions & 39 deletions src/common.rs
Original file line number Diff line number Diff line change
@@ -1,32 +1,8 @@
use crate::traverse::{EntryData, Tree, TreeIndex};
use byte_unit::{n_gb_bytes, n_gib_bytes, n_mb_bytes, n_mib_bytes, ByteUnit};
use itertools::Itertools;
use jwalk::WalkDir;
use petgraph::Direction;
use std::{fmt, path::Path, path::PathBuf};

#[derive(Debug, Copy, Clone, PartialOrd, PartialEq, Eq)]
pub enum SortMode {
SizeDescending,
SizeAscending,
}

impl SortMode {
pub fn toggle_size(&mut self) {
use SortMode::*;
*self = match self {
SizeAscending => SizeDescending,
SizeDescending => SizeAscending,
}
}
}

impl Default for SortMode {
fn default() -> Self {
SortMode::SizeDescending
}
}

pub fn path_of(tree: &Tree, mut node_idx: TreeIndex) -> PathBuf {
const THE_ROOT: usize = 1;
let mut entries = Vec::new();
Expand Down Expand Up @@ -55,21 +31,6 @@ pub(crate) fn get_size_or_panic(tree: &Tree, node_idx: TreeIndex) -> u64 {
get_entry_or_panic(tree, node_idx).size
}

pub fn sorted_entries(
tree: &Tree,
node_idx: TreeIndex,
sorting: SortMode,
) -> Vec<(TreeIndex, &EntryData)> {
use SortMode::*;
tree.neighbors_directed(node_idx, Direction::Outgoing)
.filter_map(|idx| tree.node_weight(idx).map(|w| (idx, w)))
.sorted_by(|(_, l), (_, r)| match sorting {
SizeDescending => r.size.cmp(&l.size),
SizeAscending => l.size.cmp(&r.size),
})
.collect()
}

/// Specifies a way to format bytes
#[derive(Clone, Copy)]
pub enum ByteFormat {
Expand Down
40 changes: 40 additions & 0 deletions src/interactive/app/common.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
use dua::traverse::{EntryData, Tree, TreeIndex};
use itertools::Itertools;
use petgraph::Direction;

#[derive(Debug, Copy, Clone, PartialOrd, PartialEq, Eq)]
pub enum SortMode {
SizeDescending,
SizeAscending,
}

impl SortMode {
pub fn toggle_size(&mut self) {
use SortMode::*;
*self = match self {
SizeAscending => SizeDescending,
SizeDescending => SizeAscending,
}
}
}

impl Default for SortMode {
fn default() -> Self {
SortMode::SizeDescending
}
}

pub fn sorted_entries(
tree: &Tree,
node_idx: TreeIndex,
sorting: SortMode,
) -> Vec<(TreeIndex, &EntryData)> {
use SortMode::*;
tree.neighbors_directed(node_idx, Direction::Outgoing)
.filter_map(|idx| tree.node_weight(idx).map(|w| (idx, w)))
.sorted_by(|(_, l), (_, r)| match sorting {
SizeDescending => r.size.cmp(&l.size),
SizeAscending => l.size.cmp(&r.size),
})
.collect()
}
10 changes: 7 additions & 3 deletions src/interactive/app.rs → src/interactive/app/eventloop.rs
Original file line number Diff line number Diff line change
@@ -1,11 +1,15 @@
use crate::{
interactive::widgets::{DrawState, HelpPaneState, MainWindow},
interactive::{
sorted_entries,
widgets::{DrawState, HelpPaneState, MainWindow},
SortMode,
},
ByteFormat,
};
use dua::{
path_of, sorted_entries,
path_of,
traverse::{Traversal, TreeIndex},
SortMode, WalkOptions, WalkResult,
WalkOptions, WalkResult,
};
use failure::Error;
use itertools::Itertools;
Expand Down
5 changes: 5 additions & 0 deletions src/interactive/app/mod.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
mod common;
mod eventloop;

pub use common::*;
pub use eventloop::*;
9 changes: 3 additions & 6 deletions src/interactive/widgets/entries.rs
Original file line number Diff line number Diff line change
@@ -1,12 +1,9 @@
use crate::interactive::{
widgets::{fill_background_to_right, List, ListState},
DisplayOptions,
};
use dua::{
sorted_entries,
traverse::{Tree, TreeIndex},
SortMode,
widgets::{fill_background_to_right, List, ListState},
DisplayOptions, SortMode,
};
use dua::traverse::{Tree, TreeIndex};
use itertools::Itertools;
use std::path::Path;
use tui::{
Expand Down

0 comments on commit 50438ef

Please sign in to comment.