Skip to main content

chatty_rs/config/
model_filter.rs

1#[cfg(test)]
2#[path = "model_filter_test.rs"]
3mod tests;
4
5use eyre::{Context, Result};
6use serde::{Deserialize, Serialize};
7
8#[derive(Deserialize, Serialize, Debug, Clone)]
9pub enum ModelFilter {
10    #[serde(rename = "contains")]
11    Contains(String),
12
13    #[serde(rename = "equals")]
14    Equals(String),
15
16    #[serde(rename = "regex")]
17    Regex(String),
18}
19
20impl ModelFilter {
21    pub fn build(&self) -> Result<regex::Regex> {
22        match self {
23            ModelFilter::Contains(substring) => {
24                let pattern = format!(".*{}.*", regex::escape(substring));
25                regex::Regex::new(&pattern)
26            }
27            ModelFilter::Equals(exact) => {
28                let pattern = format!("^{}$", regex::escape(exact));
29                regex::Regex::new(&pattern)
30            }
31            ModelFilter::Regex(pattern) => regex::Regex::new(pattern),
32        }
33        .wrap_err("building regex")
34    }
35}