rust-censure 0.1.0

Simple profanity filter.
Documentation
#[cfg(test)]
mod tests {
    use crate::{Censor, CensorLang};
    use crate::util::compile_any;
    use pretty_assertions::assert_eq;

    #[test]
    fn ru_test() {
        let censor = Censor::new(CensorLang::Ru).unwrap();
        let line = "ебанамат бляд";
        let res = censor.clean_line(line);

        assert_eq!(res.line, format!("{0} {0}", censor.data.beep));
        assert_eq!(res.bad_words_count, 2);
    }

    #[test]
    fn en_test() {
        let censor = Censor::new(CensorLang::En).unwrap();
        let line = "bitch fuck";
        let res = censor.clean_line(line);

        assert_eq!(res.line, format!("{0} {0}", censor.data.beep));
        assert_eq!(res.bad_words_count, 2);
    }

    #[test]
    fn compile_all_ru_patterns() {
        use crate::lang::ru::data;
        for (k, v) in data::FOUL_CORE.iter() {
            compile_any(v).expect(&format!("FOUL_CORE key {} failed", k));
        }
        for (k, list) in data::FOUL_DATA.iter() {
            for pat in list {
                compile_any(pat).expect(&format!("FOUL_DATA[{}] pattern {:?} failed", k, pat));
            }
        }
        for (k, v) in data::EXCLUDES_CORE.iter() {
            compile_any(v).expect(&format!("EXCLUDES_CORE key {} failed", k));
        }
        for (k, list) in data::EXCLUDES_DATA.iter() {
            for pat in list {
                compile_any(pat).expect(&format!("EXCLUDES_DATA[{}] pattern {:?} failed", k, pat));
            }
        }
        for pat in data::BAD_SEMI_PHRASES.iter() {
            compile_any(pat).expect(&format!("BAD_SEMI_PHRASES pattern {:?} failed", pat));
        }
        for pat in data::BAD_PHRASES.iter() {
            compile_any(pat).expect(&format!("BAD_PHRASES pattern {:?} failed", pat));
        }
    }

    #[test]
    fn compile_all_en_patterns() {
        use crate::lang::en::data;
        for (k, v) in data::FOUL_CORE.iter() {
            compile_any(v).expect(&format!("FOUL_CORE key {} failed", k));
        }
        for (k, list) in data::FOUL_DATA.iter() {
            for pat in list {
                compile_any(pat).expect(&format!("FOUL_DATA[{}] pattern {:?} failed", k, pat));
            }
        }
        for (k, v) in data::EXCLUDES_CORE.iter() {
            compile_any(v).expect(&format!("EXCLUDES_CORE key {} failed", k));
        }
        for (k, list) in data::EXCLUDES_DATA.iter() {
            for pat in list {
                compile_any(pat).expect(&format!("EXCLUDES_DATA[{}] pattern {:?} failed", k, pat));
            }
        }
        for pat in data::BAD_SEMI_PHRASES.iter() {
            compile_any(pat).expect(&format!("BAD_SEMI_PHRASES pattern {:?} failed", pat));
        }
        for pat in data::BAD_PHRASES.iter() {
            compile_any(pat).expect(&format!("BAD_PHRASES pattern {:?} failed", pat));
        }
    }
}