Skip to main content

utils/
name_pattern.rs

1/// Matches an exact name or a prefix pattern ending in `*`.
2pub fn matches_name_pattern(pattern: &str, name: &str) -> bool {
3    pattern.strip_suffix('*').map_or_else(|| pattern == name, |prefix| name.starts_with(prefix))
4}
5
6#[cfg(test)]
7mod tests {
8    use super::matches_name_pattern;
9
10    #[test]
11    fn matches_exact_names_and_trailing_prefix_wildcards() {
12        assert!(matches_name_pattern("bash", "bash"));
13        assert!(!matches_name_pattern("bash", "bash_extra"));
14        assert!(matches_name_pattern("lsp_*", "lsp_hover"));
15        assert!(matches_name_pattern("*", "anything"));
16        assert!(!matches_name_pattern("lsp_*_tool", "lsp_hover_tool"));
17    }
18}