pub const EOF: char = '\0';
pub const ZWNJ: char = '\u{200c}';
pub const ZWJ: char = '\u{200d}';
pub const ZWNBSP: char = '\u{feff}';
pub const TAB: char = '\u{9}';
pub const VT: char = '\u{b}';
pub const FF: char = '\u{c}';
pub const SP: char = '\u{20}';
pub const NBSP: char = '\u{a0}';
const NEL: char = '\u{85}';
const OGHAM_SPACE_MARK: char = '\u{1680}';
const EN_QUAD: char = '\u{2000}';
const ZWSP: char = '\u{200b}';
const NNBSP: char = '\u{202f}';
const MMSP: char = '\u{205f}';
const IDEOGRAPHIC_SPACE: char = '\u{3000}';
#[rustfmt::skip]
pub fn is_irregular_whitespace(c: char) -> bool {
matches!(
c,
| VT
| FF
| NBSP
| NEL
| OGHAM_SPACE_MARK
| EN_QUAD..=ZWSP
| NNBSP
| MMSP
| IDEOGRAPHIC_SPACE
| ZWNBSP
)
}
pub fn is_white_space_single_line(c: char) -> bool {
matches!(c, SP | TAB) || is_irregular_whitespace(c)
}
pub const LF: char = '\u{a}';
pub const CR: char = '\u{d}';
pub const LS: char = '\u{2028}';
pub const PS: char = '\u{2029}';
pub fn is_regular_line_terminator(c: char) -> bool {
matches!(c, LF | CR)
}
pub fn is_irregular_line_terminator(c: char) -> bool {
matches!(c, LS | PS)
}
pub fn is_line_terminator(c: char) -> bool {
is_regular_line_terminator(c) || is_irregular_line_terminator(c)
}