in focus/internals/src/lib/model/outlining.rs [228:270]
fn insert_leading(&mut self, pattern: Pattern, ceilings: &HashSet<PathBuf>) {
{
match pattern {
verbatim @ Pattern::Verbatim { .. } => {
self.insert(verbatim);
}
Pattern::Directory {
precedence,
path,
recursive: _,
} => {
self.insert(Pattern::Directory {
precedence,
path: path.clone(),
recursive: true,
});
let current = RefCell::new(path.as_path());
loop {
let inner = current.clone().into_inner();
if let Some(parent) = inner.parent() {
// Skip the root path.
if parent.is_empty() {
break;
}
if ceilings.contains(parent) {
break;
}
current.replace(parent);
self.insert(Pattern::Directory {
precedence,
path: parent.to_owned(),
recursive: false,
});
} else {
break;
}
}
}
}
}
}