#[inline]
pub(crate) fn id_char(c: char) -> bool {
id_start_char(c)
| matches!(
c,
|'0'..='9' // Ascii Numbers
| '_' | '-' | '\u{00B7}' | '\u{0300}'..='\u{036F}' | '\u{203F}'..='\u{2040}' )
}
#[inline]
pub(crate) fn sub_id_start_char(c: char) -> bool {
id_start_char(c) | matches!(c, |'0'..='9')
}
#[inline]
pub(crate) fn id_start_char(c: char) -> bool {
matches!(c,
'a'..='z'
| 'A'..='Z'
| '$' | '¢' | '£' | '¤' | '¥' | '\u{00B0}' | '\u{00B5}' | '\u{00B9}' | '\u{00B2}' | '\u{00B3}' | '\u{00BC}' | '\u{00BD}' | '\u{00BE}' | '\u{00C0}'..='\u{00D6}'
| '\u{00D8}'..='\u{00F6}'
| '\u{00F8}'..='\u{02FF}'
| '\u{0370}'..='\u{037D}'
| '\u{037F}'..='\u{1FFF}'
| '\u{200C}'..='\u{200D}'
| '\u{2070}'..='\u{218F}'
| '\u{2C00}'..='\u{2FEF}'
| '\u{3001}'..='\u{D7FF}'
| '\u{F900}'..='\u{FDCF}'
| '\u{FDF0}'..='\u{FFFD}'
)
}
#[inline]
pub(crate) fn space_char(c: char) -> bool {
matches!(c, |' '| '\t')
}
#[rustfmt::skip]
#[inline]
pub(crate) fn punct_char(c: char) -> bool {
c.is_ascii_punctuation()
|| matches!(c,
| '\u{00A0}'..='\u{00BF}' | '\u{00D7}' | '\u{00F7}' | '\u{037E}' )
}
#[inline]
pub(crate) fn other_char(c: char) -> bool {
matches!(
c,
| '\u{2000}'..='\u{206F}'
| '\u{2190}'..='\u{2BFF}'
| '\u{3000}'
| '\u{1D400}'..='\u{1D7FF}'
| '\u{1EE00}'..='\u{1FAFF}'
)
}
#[inline]
pub(crate) fn content_char(c: char) -> bool {
c.is_alphanumeric()
|| space_char(c)
|| punct_char(c)
|| id_char(c)
|| other_char(c)
|| id_start_char(c) }