From 17fe56bfd216cbd02b519289c046a294ce5f4018 Mon Sep 17 00:00:00 2001 From: "andy.boot" Date: Wed, 13 Jul 2022 10:35:44 +0100 Subject: [PATCH] Refactor use of depth --- src/dir_walker.rs | 2 +- src/display.rs | 10 +++++----- src/display_node.rs | 1 + src/filter.rs | 4 ++++ 4 files changed, 11 insertions(+), 6 deletions(-) diff --git a/src/dir_walker.rs b/src/dir_walker.rs index 850a45c..d31237f 100644 --- a/src/dir_walker.rs +++ b/src/dir_walker.rs @@ -143,7 +143,7 @@ fn walk( data.is_symlink(), data.is_file(), walk_data.by_filecount, - depth, + depth + 1, ); } } diff --git a/src/display.rs b/src/display.rs index 9480f15..a14451a 100644 --- a/src/display.rs +++ b/src/display.rs @@ -84,13 +84,13 @@ impl DrawData<'_> { } // TODO: can we test this? - fn generate_bar(&self, node: &DisplayNode, level: usize) -> String { + fn generate_bar(&self, node: &DisplayNode) -> String { let chars_in_bar = self.percent_bar.chars().count(); let num_bars = chars_in_bar as f32 * self.display_data.percent_size(node); let mut num_not_my_bar = (chars_in_bar as i32) - num_bars as i32; let mut new_bar = "".to_string(); - let idx = 5 - min(4, max(1, level)); + let idx = 5 - min(4, max(1, node.depth)); for c in self.percent_bar.chars() { num_not_my_bar -= 1; @@ -181,10 +181,8 @@ fn find_longest_dir_name( } fn display_node(node: DisplayNode, draw_data: &DrawData, is_biggest: bool, is_last: bool) { - // hacky way of working out how deep we are in the tree let indent = draw_data.get_new_indent(!node.children.is_empty(), is_last); - let level = ((indent.chars().count() - 1) / 2) - 1; - let bar_text = draw_data.generate_bar(&node, level); + let bar_text = draw_data.generate_bar(&node); let to_print = format_string( &node, @@ -398,6 +396,7 @@ mod tests { let n = DisplayNode { name: PathBuf::from("/short"), size: 2_u64.pow(12), // This is 4.0K + depth: 1, children: vec![], }; let indent = "┌─┴"; @@ -420,6 +419,7 @@ mod tests { let n = DisplayNode { name: PathBuf::from(name), size: 2_u64.pow(12), // This is 4.0K + depth: 1, children: vec![], }; let indent = "┌─┴"; diff --git a/src/display_node.rs b/src/display_node.rs index d26b074..ce5fc31 100644 --- a/src/display_node.rs +++ b/src/display_node.rs @@ -5,6 +5,7 @@ use std::path::PathBuf; pub struct DisplayNode { pub name: PathBuf, //todo: consider moving to a string? pub size: u64, + pub depth: usize, pub children: Vec, } diff --git a/src/filter.rs b/src/filter.rs index 0c801e6..7d56c81 100644 --- a/src/filter.rs +++ b/src/filter.rs @@ -51,6 +51,7 @@ pub fn get_all_file_types(top_level_nodes: Vec, n: usize) -> Option, n: usize) -> Option, counter: &mut HashMap( let newnode = DisplayNode { name: current.name.clone(), size: current.size, + depth: current.depth, children: new_children, }; Some(newnode)