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),
]
}
}
}
}