#[inline]
pub(super) fn is_bidi_control(c: char) -> bool {
matches!(
c,
'\u{202A}'..='\u{202E}' | '\u{2066}'..='\u{2069}' | '\u{200E}' | '\u{200F}' )
}
#[inline]
pub(super) fn is_format(c: char) -> bool {
matches!(
c,
'\u{200B}'..='\u{200F}'
| '\u{2060}'..='\u{2064}'
| '\u{061C}'
| '\u{180B}'..='\u{180E}'
| '\u{180F}'
| '\u{FEFF}'
| '\u{FE00}'..='\u{FE0F}'
| '\u{E0100}'..='\u{E01EF}'
| '\u{E0001}'
| '\u{E0020}'..='\u{E007F}'
| '\u{202A}'..='\u{202E}'
| '\u{2066}'..='\u{2069}'
)
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn zwsp_is_format() {
assert!(is_format('\u{200B}'));
}
#[test]
fn bom_is_format() {
assert!(is_format('\u{FEFF}'));
}
#[test]
fn rlo_is_bidi_control() {
assert!(is_bidi_control('\u{202E}'));
}
#[test]
fn variation_selector_16_is_format() {
assert!(is_format('\u{FE0F}'));
}
#[test]
fn tag_char_is_format() {
assert!(is_format('\u{E0061}'));
}
#[test]
fn ordinary_letters_are_neither() {
for c in "héllo, мир!".chars() {
assert!(!is_bidi_control(c));
assert!(!is_format(c));
}
}
}