tipping_rs/
misc.rs

1use fancy_regex::Regex;
2use itertools::Itertools;
3
4pub fn compile_into_regex<Item, Iter>(regex_str: Iter) -> Regex
5where
6    Item: AsRef<str>,
7    Iter: IntoIterator<Item = Item>,
8{
9    Regex::new(
10        regex_str
11            .into_iter()
12            .map(|s| format!(r"(?:{})", s.as_ref()))
13            .join("|")
14            .as_str(),
15    )
16    .unwrap()
17}
18
19#[cfg(test)]
20mod tests {
21    use super::*;
22
23    #[test]
24    fn test_name() {
25        let r = compile_into_regex([r"\d+", r"[a-zA-Z]+"]);
26        assert!(r.is_match("123").unwrap());
27        assert!(r.is_match("abc").unwrap());
28        assert!(r.is_match("ABC").unwrap());
29
30        assert!(!r.is_match("@").unwrap());
31        assert!(!r.is_match("#").unwrap());
32    }
33}