rust_censure/lang/
common.rs1use fancy_regex::Regex;
2use once_cell::sync::Lazy;
3use std::collections::HashMap;
4
5pub static BEEP: &str = "***";
7pub static BEEP_HTML: &str = "<span class=\"censored\">***</span>";
8
9pub fn translate_similar_chars(s: &str, trans_table: &HashMap<char, char>) -> String {
11 s.chars().map(|c| trans_table.get(&c).copied().unwrap_or(c)).collect()
12}
13
14pub static NORMALIZATION_PATTERNS: Lazy<Vec<(Regex, &'static str)>> = Lazy::new(|| {
16 vec![
17 (Regex::new(r"&[Ee][Uu][Mm][Ll];").unwrap(), "е"),
18 (Regex::new(r"&[Uu][Uu][Mm][Ll];").unwrap(), "и"),
19 (Regex::new(r"&[Aa][Uu][Mm][Ll];").unwrap(), "а"),
20 (Regex::new(r"&[Oo][Uu][Mm][Ll];").unwrap(), "о"),
21 (Regex::new(r"&[Yy][Uu][Mm][Ll];").unwrap(), "у"),
22
23 (Regex::new(r"Ë").unwrap(), "е"),
24
25 (Regex::new(r"&[Cc][Ee][Nn][Tt];").unwrap(), "с"),
26 (Regex::new(r"¢").unwrap(), "с"),
27
28 (Regex::new(r"\|\\\|").unwrap(), "и"), (Regex::new(r"/\\").unwrap(), "л"), (Regex::new(r"><").unwrap(), "х"),
32 (Regex::new(r"\)\(").unwrap(), "х"),
33 (Regex::new(r"}{").unwrap(), "х"),
34
35 (Regex::new(r">\|<").unwrap(), "ж"),
36 (Regex::new(r"}\|{").unwrap(), "ж"),
37
38 (Regex::new(r"`/").unwrap(), "y"),
39 (Regex::new(r"\-/").unwrap(), "y"),
40 (Regex::new(r"`\-/").unwrap(), "y"),
41
42 (Regex::new(r"b\|").unwrap(), "ы"),
43 (Regex::new(r"bI").unwrap(), "ы"),
44 (Regex::new(r"bl").unwrap(), "ы"),
45
46 (Regex::new(r"x").unwrap(), "х"),
47 (Regex::new(r"y").unwrap(), "у"),
48 (Regex::new(r"3[\.,]14[\d]*").unwrap(), "пи"),
49 (Regex::new(r"2[\.,]72[\d]*").unwrap(), "е"),
50 ]
51});
52
53pub static PAT_SPACE: Lazy<Regex> = Lazy::new(|| Regex::new(r"\s+").unwrap());
54
55pub static PAT_PUNCT1: Lazy<Regex> = Lazy::new(|| Regex::new(r#"["\-+;.,*?()]+"#).unwrap()); pub static PAT_PUNCT2: Lazy<Regex> = Lazy::new(|| Regex::new(r#"[!:_]+"#).unwrap());
57pub static PAT_PUNCT3: Lazy<Regex> = Lazy::new(|| Regex::new(r#"["\-+;.,*?()!:_]+"#).unwrap());
58
59pub static PAT_HTML_TAG: Lazy<Regex> = Lazy::new(|| Regex::new(r#"(<.*?>)|(&[\w]{2,6};)|(<![-]+)|([-]+>)"#).unwrap());
60pub static PAT_HTML_SPACE: Lazy<Regex> = Lazy::new(|| Regex::new(r"(?i) ").unwrap());
63pub static PAT_PREP: Lazy<Regex> = Lazy::new(|| Regex::new(r"(а[х]?)|(в)|([вмт]ы)|(д[ао])|(же)|(за)").unwrap());