minos_codex/regex/
mod.rs

1use crate::MinosCodexError;
2use regex::Regex;
3use std::collections::HashMap;
4
5pub struct RegexCache {
6    cache: HashMap<String, Regex>,
7}
8
9impl RegexCache {
10    pub fn new() -> Self {
11        RegexCache {
12            cache: HashMap::new(),
13        }
14    }
15
16    pub fn get_or_insert(&mut self, pattern: &str) -> Result<&Regex, MinosCodexError> {
17        if !self.cache.contains_key(pattern) {
18            let regex = Regex::new(pattern)?;
19            self.cache.insert(pattern.to_string(), regex);
20        }
21        Ok(self.cache.get(pattern).unwrap())
22    }
23}