From 1ce57a29c45ee9896bfc529a13875dbc3859812f Mon Sep 17 00:00:00 2001 From: Sebastian Thiel Date: Sat, 15 Jun 2019 13:20:28 +0800 Subject: refactor --- src/common.rs | 21 +-------------------- src/interactive/app/common.rs | 2 +- src/interactive/app/handlers.rs | 3 +-- src/interactive/mod.rs | 28 ++++++++++++++++++++++++++++ src/interactive/widgets/entries.rs | 3 ++- src/interactive/widgets/mark.rs | 4 +--- 6 files changed, 34 insertions(+), 27 deletions(-) (limited to 'src') diff --git a/src/common.rs b/src/common.rs index 83b4660..cc499c6 100644 --- a/src/common.rs +++ b/src/common.rs @@ -3,26 +3,7 @@ use byte_unit::{n_gb_bytes, n_gib_bytes, n_mb_bytes, n_mib_bytes, ByteUnit}; use jwalk::WalkDir; use std::{fmt, path::Path, path::PathBuf}; -pub fn path_of(tree: &Tree, mut node_idx: TreeIndex) -> PathBuf { - const THE_ROOT: usize = 1; - let mut entries = Vec::new(); - - while let Some(parent_idx) = tree.neighbors_directed(node_idx, petgraph::Incoming).next() { - entries.push(get_entry_or_panic(tree, node_idx)); - node_idx = parent_idx; - } - entries.push(get_entry_or_panic(tree, node_idx)); - entries - .iter() - .rev() - .skip(THE_ROOT) - .fold(PathBuf::new(), |mut acc, entry| { - acc.push(&entry.name); - acc - }) -} - -pub(crate) fn get_entry_or_panic(tree: &Tree, node_idx: TreeIndex) -> &EntryData { +pub fn get_entry_or_panic(tree: &Tree, node_idx: TreeIndex) -> &EntryData { tree.node_weight(node_idx) .expect("node should always be retrievable with valid index") } diff --git a/src/interactive/app/common.rs b/src/interactive/app/common.rs index 937276a..c612f28 100644 --- a/src/interactive/app/common.rs +++ b/src/interactive/app/common.rs @@ -1,4 +1,4 @@ -use dua::path_of; +use crate::interactive::path_of; use dua::traverse::{EntryData, Tree, TreeIndex}; use itertools::Itertools; use petgraph::Direction; diff --git a/src/interactive/app/handlers.rs b/src/interactive/app/handlers.rs index ad2b064..e9054aa 100644 --- a/src/interactive/app/handlers.rs +++ b/src/interactive/app/handlers.rs @@ -1,10 +1,9 @@ use crate::interactive::widgets::MarkMode; use crate::interactive::{ app::{FocussedPane::*, TerminalApp}, - sorted_entries, + path_of, sorted_entries, widgets::{HelpPane, MarkPane}, }; -use dua::path_of; use dua::traverse::TreeIndex; use itertools::Itertools; use petgraph::Direction; diff --git a/src/interactive/mod.rs b/src/interactive/mod.rs index ef02372..07c2036 100644 --- a/src/interactive/mod.rs +++ b/src/interactive/mod.rs @@ -3,5 +3,33 @@ pub mod widgets; pub use self::app::*; +mod utils { + use dua::{ + get_entry_or_panic, + traverse::{Tree, TreeIndex}, + }; + use std::path::PathBuf; + + pub fn path_of(tree: &Tree, mut node_idx: TreeIndex) -> PathBuf { + const THE_ROOT: usize = 1; + let mut entries = Vec::new(); + + while let Some(parent_idx) = tree.neighbors_directed(node_idx, petgraph::Incoming).next() { + entries.push(get_entry_or_panic(tree, node_idx)); + node_idx = parent_idx; + } + entries.push(get_entry_or_panic(tree, node_idx)); + entries + .iter() + .rev() + .skip(THE_ROOT) + .fold(PathBuf::new(), |mut acc, entry| { + acc.push(&entry.name); + acc + }) + } +} +pub use utils::*; + #[cfg(test)] mod app_test; diff --git a/src/interactive/widgets/entries.rs b/src/interactive/widgets/entries.rs index cde0e5b..006673c 100644 --- a/src/interactive/widgets/entries.rs +++ b/src/interactive/widgets/entries.rs @@ -1,4 +1,5 @@ use crate::interactive::{ + path_of, widgets::{ EntryMarkMap, COLOR_BYTESIZE_SELECTED, COLOR_MARKED, COLOR_MARKED_DARK, COLOR_MARKED_DARKER, }, @@ -57,7 +58,7 @@ impl Entries { }; let total: u64 = entries.iter().map(|b| b.data.size).sum(); - let title = match dua::path_of(tree, *root).to_string_lossy().to_string() { + let title = match path_of(tree, *root).to_string_lossy().to_string() { ref p if p.is_empty() => Path::new(".") .canonicalize() .map(|p| p.to_string_lossy().to_string()) diff --git a/src/interactive/widgets/mark.rs b/src/interactive/widgets/mark.rs index 8faf784..688a48a 100644 --- a/src/interactive/widgets/mark.rs +++ b/src/interactive/widgets/mark.rs @@ -1,10 +1,9 @@ use crate::interactive::{ - fit_string_graphemes_with_ellipsis, + fit_string_graphemes_with_ellipsis, path_of, widgets::{COLOR_BYTESIZE_SELECTED, COLOR_MARKED_LIGHT}, CursorDirection, }; use dua::{ - path_of, traverse::{Tree, TreeIndex}, ByteFormat, }; @@ -311,7 +310,6 @@ impl MarkPane { fg: Color::Black, bg: Color::Yellow, modifier: Modifier::BOLD, - ..Default::default() }; Paragraph::new( [ -- cgit v1.2.3