bernardo-tui 0.2.7

A keyboard-only, distraction-free TUI widget library
Documentation
use regex::Regex;

#[derive(Debug, Clone)]
pub enum SearchPattern {
    RawString(String),
    Regex(Regex, String),
}

impl SearchPattern {
    pub fn matches(&self, s: &str) -> bool {
        match &self {
            &SearchPattern::RawString(r) => r == s,
            SearchPattern::Regex(re, _) => {
                if let Some(m) = re.find_at(s, 0) {
                    m.start() == 0 && m.end() == s.len()
                } else {
                    false
                }
            }
        }
    }
}

impl<T: ToString> From<T> for SearchPattern {
    fn from(t: T) -> Self {
        let s = t.to_string();
        match Regex::new(&s) {
            Ok(re) => SearchPattern::Regex(re, s),
            Err(_) => SearchPattern::RawString(s),
        }
    }
}