1
0
mirror of https://github.com/sharkdp/bat synced 2026-07-28 17:51:44 +00:00

Refactor: string-or-struct matcher syntax, Case enum, remove case_sensitive_mappings table

Co-authored-by: keith-hall <11882719+keith-hall@users.noreply.github.com>
This commit is contained in:
copilot-swe-agent[bot]
2026-03-18 03:35:38 +00:00
committed by Keith Hall
parent 22c38b6fcb
commit 2a29802dd5
4 changed files with 76 additions and 36 deletions
+11 -4
View File
@@ -17,9 +17,16 @@ use ignored_suffixes::IgnoredSuffixes;
mod builtin;
pub mod ignored_suffixes;
fn make_glob_matcher(from: &str, case_insensitive: bool) -> Result<GlobMatcher> {
/// Whether a glob pattern should be matched case-sensitively or case-insensitively.
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub(crate) enum Case {
Sensitive,
Insensitive,
}
fn make_glob_matcher(from: &str, case: Case) -> Result<GlobMatcher> {
let matcher = GlobBuilder::new(from)
.case_insensitive(case_insensitive)
.case_insensitive(matches!(case, Case::Insensitive))
.literal_separator(true)
.build()?
.compile_matcher();
@@ -97,14 +104,14 @@ impl<'a> SyntaxMapping<'a> {
}
pub fn insert(&mut self, from: &str, to: MappingTarget<'a>) -> Result<()> {
let matcher = make_glob_matcher(from, true)?;
let matcher = make_glob_matcher(from, Case::Insensitive)?;
self.custom_mappings.push((matcher, to));
Ok(())
}
/// Like [`Self::insert`], but the glob pattern is matched case-sensitively.
pub fn insert_case_sensitive(&mut self, from: &str, to: MappingTarget<'a>) -> Result<()> {
let matcher = make_glob_matcher(from, false)?;
let matcher = make_glob_matcher(from, Case::Sensitive)?;
self.custom_mappings.push((matcher, to));
Ok(())
}