use crate::entry::Entry;
use crate::util::parent_dir;
use std::collections::BTreeMap;
pub fn group_by_extension(entries: &[Entry]) -> BTreeMap<Option<&str>, Vec<&Entry>> {
let mut map: BTreeMap<Option<&str>, Vec<&Entry>> = BTreeMap::new();
for entry in entries {
map.entry(entry.extension()).or_default().push(entry);
}
map
}
pub fn group_by_directory(entries: &[Entry]) -> BTreeMap<&str, Vec<&Entry>> {
let mut map: BTreeMap<&str, Vec<&Entry>> = BTreeMap::new();
for entry in entries {
let parent = parent_dir(&entry.relative_path);
map.entry(parent).or_default().push(entry);
}
map
}
pub fn group_by_depth(entries: &[Entry]) -> BTreeMap<u32, Vec<&Entry>> {
let mut map: BTreeMap<u32, Vec<&Entry>> = BTreeMap::new();
for entry in entries {
map.entry(entry.depth).or_default().push(entry);
}
map
}