alphabetical order in toc
This commit is contained in:
parent
754e717a58
commit
a5240fea57
1 changed files with 24 additions and 3 deletions
|
@ -1,21 +1,40 @@
|
|||
use std::path::Path;
|
||||
use std::{cmp::Ordering, path::Path};
|
||||
|
||||
use regex::Regex;
|
||||
use serde::Serialize;
|
||||
|
||||
#[derive(Clone, Debug, Serialize)]
|
||||
#[derive(Clone, Debug, Serialize, PartialEq, Eq)]
|
||||
pub struct FileNode {
|
||||
name: String,
|
||||
is_dir: bool,
|
||||
children: Vec<FileNode>,
|
||||
}
|
||||
|
||||
impl Ord for FileNode {
|
||||
fn cmp(&self, other: &Self) -> Ordering {
|
||||
match (self.is_dir, other.is_dir) {
|
||||
// If both are directories or both are files, compare names
|
||||
(true, true) | (false, false) => self.name.cmp(&other.name),
|
||||
// If self is directory and other is file, self comes first
|
||||
(true, false) => Ordering::Less,
|
||||
// If self is file and other is directory, other comes first
|
||||
(false, true) => Ordering::Greater,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl PartialOrd for FileNode {
|
||||
fn partial_cmp(&self, other: &Self) -> Option<Ordering> {
|
||||
Some(self.cmp(other))
|
||||
}
|
||||
}
|
||||
|
||||
pub fn get_filetree(
|
||||
dir_path: &str,
|
||||
exclusion_list: &[String],
|
||||
exclusion_patterns: &[Regex],
|
||||
) -> FileNode {
|
||||
let children = std::fs::read_dir(dir_path)
|
||||
let mut children: Vec<FileNode> = std::fs::read_dir(dir_path)
|
||||
.unwrap()
|
||||
.filter_map(Result::ok)
|
||||
.filter_map(|entry| {
|
||||
|
@ -49,6 +68,8 @@ pub fn get_filetree(
|
|||
})
|
||||
.collect();
|
||||
|
||||
children.sort();
|
||||
|
||||
FileNode {
|
||||
name: Path::new(dir_path)
|
||||
.file_name()
|
||||
|
|
Loading…
Reference in a new issue