fix CI error

This commit is contained in:
Erio-Harrison 2025-02-28 12:10:46 +11:00
parent e04b897c54
commit 9dffc8c5cc
2 changed files with 32 additions and 40 deletions

View File

@ -11,6 +11,7 @@ use cmd::Cmd;
fn main() -> io::Result<()> { fn main() -> io::Result<()> {
// Since we are generating completions in the package directory, we need to // Since we are generating completions in the package directory, we need to
// set this so that Cargo doesn't rebuild every time. // set this so that Cargo doesn't rebuild every time.
println!("cargo:rustc-check-cfg=cfg(test)");
println!("cargo:rerun-if-changed=build.rs"); println!("cargo:rerun-if-changed=build.rs");
println!("cargo:rerun-if-changed=src/"); println!("cargo:rerun-if-changed=src/");
println!("cargo:rerun-if-changed=templates/"); println!("cargo:rerun-if-changed=templates/");

View File

@ -54,7 +54,7 @@ impl<'a> Stream<'a> {
}; };
let words: Vec<&str> = basename let words: Vec<&str> = basename
.split(|c: char| c == '-' || c == '_' || c == ' ' || c == '.') .split(|c| ['-', '_', ' ', '.'].contains(&c))
.filter(|s| !s.is_empty()) .filter(|s| !s.is_empty())
.collect(); .collect();
@ -63,14 +63,12 @@ impl<'a> Stream<'a> {
} }
let acronym: String = words.iter().filter_map(|word| word.chars().next()).collect(); let acronym: String = words.iter().filter_map(|word| word.chars().next()).collect();
let acronym_lower = util::to_lowercase(&acronym); let acronym_lower = util::to_lowercase(&acronym);
let mut user_input = String::new(); let user_input: String = keywords.iter()
for kw in keywords { .map(String::as_str)
user_input.push_str(kw); .chain(std::iter::once(keywords_last))
} .collect();
user_input.push_str(keywords_last);
acronym_lower == util::to_lowercase(&user_input) acronym_lower == util::to_lowercase(&user_input)
} }
@ -84,34 +82,27 @@ impl<'a> Stream<'a> {
let path_lower = util::to_lowercase(path); let path_lower = util::to_lowercase(path);
let mut path_str = path_lower.as_str(); let mut path_str = path_lower.as_str();
let regular_match = { let mut matched = false;
let mut matched = false; if let Some(idx) = path_str.rfind(keywords_last) {
match path_str.rfind(keywords_last) { if path_str[idx + keywords_last.len()..].contains(path::is_separator) {
Some(idx) => { return false;
if path_str[idx + keywords_last.len()..].contains(path::is_separator) {
return false;
}
path_str = &path_str[..idx];
matched = true;
}
None => {}
} }
path_str = &path_str[..idx];
matched = true;
}
if !matched { if !matched {
return self.match_acronym(path, keywords_last, keywords); return self.match_acronym(path, keywords_last, keywords);
}
for keyword in keywords.iter().rev() {
match path_str.rfind(keyword) {
Some(idx) => path_str = &path_str[..idx],
None => return self.match_acronym(path, keywords_last, keywords),
} }
}
for keyword in keywords.iter().rev() { true
match path_str.rfind(keyword) {
Some(idx) => path_str = &path_str[..idx],
None => return self.match_acronym(path, keywords_last, keywords),
}
}
true
};
regular_match
} }
fn filter_by_exclude(&self, path: &str) -> bool { fn filter_by_exclude(&self, path: &str) -> bool {