diff --git a/src/lib.rs b/src/lib.rs index d93af25f..1b880ca6 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -10,6 +10,8 @@ mod sorting; mod tests; mod version; +use fancy_regex::{Error as RegexImplError, Regex, RegexBuilder}; + pub use database::{Database, WriteMode}; pub use game::{Game, GameType}; pub use logging::{LogLevel, set_log_level, set_logging_callback}; @@ -19,3 +21,10 @@ pub use version::{ LIBLOOT_VERSION_MAJOR, LIBLOOT_VERSION_MINOR, LIBLOOT_VERSION_PATCH, is_compatible, libloot_revision, libloot_version, }; + +fn case_insensitive_regex(value: &str) -> Result> { + RegexBuilder::new(value) + .case_insensitive(true) + .build() + .map_err(Into::into) +} diff --git a/src/metadata/plugin_metadata.rs b/src/metadata/plugin_metadata.rs index c8659f06..103cf6f5 100644 --- a/src/metadata/plugin_metadata.rs +++ b/src/metadata/plugin_metadata.rs @@ -3,7 +3,7 @@ use std::sync::LazyLock; use fancy_regex::{Captures, Error as RegexImplError, Regex}; use saphyr::MarkedYaml; -use crate::logging; +use crate::{case_insensitive_regex, logging}; use super::{ error::{MetadataParsingErrorReason, ParseMetadataError, RegexError}, @@ -239,7 +239,7 @@ impl PluginName { format!("{}(?:{}", &captures[1], &captures[2]) }); - let regex = Regex::new(&format!("(?i)^{}$", ®ex_name))?; + let regex = case_insensitive_regex(&format!("^{}$", ®ex_name))?; Ok(Self { string: name, regex: Some(regex), diff --git a/src/plugin/mod.rs b/src/plugin/mod.rs index c2183771..d829450b 100644 --- a/src/plugin/mod.rs +++ b/src/plugin/mod.rs @@ -15,6 +15,7 @@ use fancy_regex::{Error as RegexImplError, Regex}; use crate::{ GameType, archive::{assets_in_archives, do_assets_overlap, find_associated_archives}, + case_insensitive_regex, game::GameCache, logging, metadata::plugin_metadata::trim_dot_ghost, @@ -426,16 +427,16 @@ fn extract_version(description: &str) -> Result, Box