use std::borrow::Cow;
pub fn remove(string: &str) -> Cow<'_, str> {
string.chars().filter(|&c| !is_diacritic(c)).collect()
}
fn is_diacritic(c: char) -> bool {
matches!(c, '\u{0610}'..='\u{0614}') || matches!(c, '\u{0615}') || matches!(c, '\u{0617}'..='\u{061A}') || matches!(c, '\u{061C}') || matches!(c, '\u{0640}') || matches!(c, '\u{064B}'..='\u{0652}') || matches!(c, '\u{0653}'..='\u{0655}') || matches!(c, '\u{0656}'..='\u{065F}') || matches!(c, '\u{0660}') || matches!(c, '\u{06D6}'..='\u{06ED}') }
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn remove_tashkil() {
let removed = remove("تَشْدِيد");
assert_eq!("تشديد", removed);
}
}