fn insert_leading()

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;
                        }
                    }
                }
            }
        }
    }