1use regex::Regex;
2
3pub fn transform_to_persian_digits(text: &str) -> String {
4 text.replace("0", "۰")
5 .replace("1", "۱")
6 .replace("2", "۲")
7 .replace("3", "۳")
8 .replace("4", "۴")
9 .replace("5", "۵")
10 .replace("6", "۶")
11 .replace("7", "۷")
12 .replace("8", "۸")
13 .replace("9", "۹")
14}
15
16pub fn transform_int_to_persian_digits(value: i32) -> String {
17 transform_to_persian_digits(&format!("{}", value))
18}
19
20pub fn transform_to_english_digits(text: &str) -> String {
21 text.replace("۰", "0")
22 .replace("۱", "1")
23 .replace("۲", "2")
24 .replace("۳", "3")
25 .replace("۴", "4")
26 .replace("۵", "5")
27 .replace("۶", "6")
28 .replace("۷", "7")
29 .replace("۸", "8")
30 .replace("۹", "9")
31}
32
33pub fn filter_english_numbers(text: &str) -> String {
34 let re = regex::Regex::new(r"[^0-9.]").unwrap();
35 re.replace_all(text, "").to_string()
36}
37
38pub fn filter_persian_numbers(text: &str) -> String {
39 let re = Regex::new(r"[^۰۱۲۳۴۵۶۷۸۹]").unwrap();
41 re.replace_all(text, "").to_string()
43}
44
45pub fn numeric_only(text: &str) -> String {
46 let re = Regex::new(r"[^۰-۹0-9.]").unwrap();
47 re.replace_all(text, "").to_string()
48}
49
50pub fn filter_non_persian_alphabet(text: &str) -> String {
51 let re = Regex::new(r"[^\u{0600}-\u{06FF}.]").unwrap();
52 re.replace_all(text, "").to_string()
53}
54
55pub fn normalize_arabic(text: &str) -> String {
56 let replacements = [
57 ("ي", "ی"),
58 ("ك", "ک"),
59 ("دِ", "د"),
60 ("بِ", "ب"),
61 ("زِ", "ز"),
62 ("ذِ", "ذ"),
63 ("ِشِ", "ش"),
64 ("ِسِ", "س"),
65 ("ى", "ی"),
66 ];
67
68 let mut result = text.to_owned();
69 for (from, to) in replacements.iter() {
70 result = result.replace(from, to);
71 }
72 result
73}
74
75