fn from()

in focus/internals/src/lib/model/outlining.rs [130:173]


    fn from(other: Pattern) -> Vec<OsString> {
        match other {
            Pattern::Verbatim {
                precedence: _i,
                fragment,
            } => vec![OsString::from(fragment)],
            Pattern::Directory {
                precedence: _i,
                path,
                recursive,
            } => {
                let mut actual = path.as_os_str().as_bytes().to_vec();
                if actual.is_empty() || actual.len() == 1 && actual[0] == MAIN_SEPARATOR_BYTE {
                    return vec![
                        OsString::from_str("/*").unwrap(),
                        OsString::from_str("!/*/").unwrap(),
                    ];
                }

                if !actual.starts_with(MAIN_SEPARATOR_BYTES) {
                    actual.insert(0, MAIN_SEPARATOR_BYTE);
                }
                if !actual.ends_with(MAIN_SEPARATOR_BYTES) {
                    actual.push(MAIN_SEPARATOR_BYTE);
                }

                let no_descendents = {
                    let mut t = NOT_TOKEN.clone();
                    t.extend(actual.clone());
                    t.extend(STAR_SLASH_TOKEN.clone());
                    t
                };

                if recursive {
                    vec![OsString::from_vec(actual)]
                } else {
                    vec![
                        OsString::from_vec(actual),
                        OsString::from_vec(no_descendents),
                    ]
                }
            }
        }
    }