1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
mod candidate; mod composite_pattern; mod content_pattern; mod content_regex_pattern; mod exact_pattern; mod fuzzy_pattern; mod input_pattern; mod name_match; mod operator; mod pattern; mod pattern_object; mod pattern_parts; mod regex_pattern; mod search_mode; pub use { candidate::Candidate, composite_pattern::CompositePattern, content_pattern::ContentExactPattern, content_regex_pattern::ContentRegexPattern, exact_pattern::ExactPattern, fuzzy_pattern::FuzzyPattern, input_pattern::InputPattern, name_match::NameMatch, pattern::Pattern, pattern_object::PatternObject, pattern_parts::PatternParts, operator::PatternOperator, regex_pattern::RegexPattern, search_mode::*, }; use crate::errors::PatternError; pub fn build_regex(pat: &str, flags: &str) -> Result<regex::Regex, PatternError> { let mut builder = regex::RegexBuilder::new(pat); for c in flags.chars() { match c { 'i' => { builder.case_insensitive(true); } 'U' => { builder.swap_greed(true); } _ => { return Err(PatternError::UnknownRegexFlag { bad: c }); } } } Ok(builder.build()?) }