Fixed number of elements with recursivity
This commit is contained in:
@@ -18,8 +18,8 @@ pub fn list(elements: Vec<Element>, recursive_limit: usize) {
|
|||||||
.min(width - 31);
|
.min(width - 31);
|
||||||
|
|
||||||
print_header(name_length);
|
print_header(name_length);
|
||||||
print_elements(&elements, name_length, recursive_limit, 0, &Vec::new());
|
let num_elements = print_elements(&elements, name_length, recursive_limit, 0, &Vec::new());
|
||||||
print_footer(&elements, name_length);
|
print_footer(num_elements, name_length);
|
||||||
}
|
}
|
||||||
|
|
||||||
fn print_header(name_length: usize) {
|
fn print_header(name_length: usize) {
|
||||||
@@ -40,7 +40,9 @@ fn print_elements(
|
|||||||
recursive_limit: usize,
|
recursive_limit: usize,
|
||||||
current_depth: usize,
|
current_depth: usize,
|
||||||
is_last_element: &[bool],
|
is_last_element: &[bool],
|
||||||
) {
|
) -> usize {
|
||||||
|
let mut num_elements = elements.len();
|
||||||
|
|
||||||
let mut new_is_last_element = is_last_element.to_owned();
|
let mut new_is_last_element = is_last_element.to_owned();
|
||||||
|
|
||||||
for (i, e) in elements.iter().enumerate() {
|
for (i, e) in elements.iter().enumerate() {
|
||||||
@@ -91,7 +93,7 @@ fn print_elements(
|
|||||||
if e.get_file_type() == TypeOfFile::Dir && current_depth < recursive_limit {
|
if e.get_file_type() == TypeOfFile::Dir && current_depth < recursive_limit {
|
||||||
let dir_path = e.get_path_string();
|
let dir_path = e.get_path_string();
|
||||||
new_is_last_element.push(i == elements.len() - 1);
|
new_is_last_element.push(i == elements.len() - 1);
|
||||||
print_elements(
|
num_elements += print_elements(
|
||||||
&get_elements_from_path(dir_path, true),
|
&get_elements_from_path(dir_path, true),
|
||||||
name_length,
|
name_length,
|
||||||
recursive_limit,
|
recursive_limit,
|
||||||
@@ -101,6 +103,7 @@ fn print_elements(
|
|||||||
new_is_last_element.pop();
|
new_is_last_element.pop();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
num_elements
|
||||||
}
|
}
|
||||||
|
|
||||||
fn add_recursive_lines(e_string: &mut String, is_last_element: &[bool], is_last: bool) {
|
fn add_recursive_lines(e_string: &mut String, is_last_element: &[bool], is_last: bool) {
|
||||||
@@ -161,8 +164,8 @@ fn print_size_and_creation_date(e: &Element) {
|
|||||||
println!("│");
|
println!("│");
|
||||||
}
|
}
|
||||||
|
|
||||||
fn print_footer(elements: &Vec<Element>, name_length: usize) {
|
fn print_footer(num_elements: usize, name_length: usize) {
|
||||||
let num_elements = elements.len();
|
// let num_elements = elements.len();
|
||||||
let num_elements_len = (num_elements as f32).log10() as usize;
|
let num_elements_len = (num_elements as f32).log10() as usize;
|
||||||
let name_length_fixed = name_length - (num_elements_len + 13);
|
let name_length_fixed = name_length - (num_elements_len + 13);
|
||||||
print!("╰");
|
print!("╰");
|
||||||
|
|||||||
Reference in New Issue
Block a user