use regex::Regex;
use std::borrow::Borrow;
use std::fmt;
use crate::core::*;
pub struct MatchesRegex {
regex: Regex,
}
impl fmt::Display for MatchesRegex {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
self.regex.fmt(f)
}
}
impl<B: Borrow<str>> Matcher<B> for MatchesRegex {
fn matches(&self, actual: B) -> MatchResult {
if self.regex.is_match(actual.borrow()) {
success()
} else {
Err(format!("was {:?}", actual.borrow()))
}
}
}
pub fn matches_regex(regex: &str) -> MatchesRegex {
MatchesRegex {
regex: Regex::new(regex).unwrap(),
}
}