1//! Character specific parsers and combinators 2//! 3//! Functions recognizing specific characters 4 5#[cfg(test)] 6mod tests; 7 8pub mod complete; 9pub mod streaming; 10 11/// Tests if byte is ASCII alphabetic: A-Z, a-z 12/// 13/// # Example 14/// 15/// ``` 16/// # use nom::character::is_alphabetic; 17/// assert_eq!(is_alphabetic(b'9'), false); 18/// assert_eq!(is_alphabetic(b'a'), true); 19/// ``` 20#[inline] 21pub fn is_alphabetic(chr: u8) -> bool { 22 (chr >= 0x41 && chr <= 0x5A) || (chr >= 0x61 && chr <= 0x7A) 23} 24 25/// Tests if byte is ASCII digit: 0-9 26/// 27/// # Example 28/// 29/// ``` 30/// # use nom::character::is_digit; 31/// assert_eq!(is_digit(b'a'), false); 32/// assert_eq!(is_digit(b'9'), true); 33/// ``` 34#[inline] 35pub fn is_digit(chr: u8) -> bool { 36 chr >= 0x30 && chr <= 0x39 37} 38 39/// Tests if byte is ASCII hex digit: 0-9, A-F, a-f 40/// 41/// # Example 42/// 43/// ``` 44/// # use nom::character::is_hex_digit; 45/// assert_eq!(is_hex_digit(b'a'), true); 46/// assert_eq!(is_hex_digit(b'9'), true); 47/// assert_eq!(is_hex_digit(b'A'), true); 48/// assert_eq!(is_hex_digit(b'x'), false); 49/// ``` 50#[inline] 51pub fn is_hex_digit(chr: u8) -> bool { 52 (chr >= 0x30 && chr <= 0x39) || (chr >= 0x41 && chr <= 0x46) || (chr >= 0x61 && chr <= 0x66) 53} 54 55/// Tests if byte is ASCII octal digit: 0-7 56/// 57/// # Example 58/// 59/// ``` 60/// # use nom::character::is_oct_digit; 61/// assert_eq!(is_oct_digit(b'a'), false); 62/// assert_eq!(is_oct_digit(b'9'), false); 63/// assert_eq!(is_oct_digit(b'6'), true); 64/// ``` 65#[inline] 66pub fn is_oct_digit(chr: u8) -> bool { 67 chr >= 0x30 && chr <= 0x37 68} 69 70/// Tests if byte is ASCII alphanumeric: A-Z, a-z, 0-9 71/// 72/// # Example 73/// 74/// ``` 75/// # use nom::character::is_alphanumeric; 76/// assert_eq!(is_alphanumeric(b'-'), false); 77/// assert_eq!(is_alphanumeric(b'a'), true); 78/// assert_eq!(is_alphanumeric(b'9'), true); 79/// assert_eq!(is_alphanumeric(b'A'), true); 80/// ``` 81#[inline] 82pub fn is_alphanumeric(chr: u8) -> bool { 83 is_alphabetic(chr) || is_digit(chr) 84} 85 86/// Tests if byte is ASCII space or tab 87/// 88/// # Example 89/// 90/// ``` 91/// # use nom::character::is_space; 92/// assert_eq!(is_space(b'\n'), false); 93/// assert_eq!(is_space(b'\r'), false); 94/// assert_eq!(is_space(b' '), true); 95/// assert_eq!(is_space(b'\t'), true); 96/// ``` 97#[inline] 98pub fn is_space(chr: u8) -> bool { 99 chr == b' ' || chr == b'\t' 100} 101 102/// Tests if byte is ASCII newline: \n 103/// 104/// # Example 105/// 106/// ``` 107/// # use nom::character::is_newline; 108/// assert_eq!(is_newline(b'\n'), true); 109/// assert_eq!(is_newline(b'\r'), false); 110/// assert_eq!(is_newline(b' '), false); 111/// assert_eq!(is_newline(b'\t'), false); 112/// ``` 113#[inline] 114pub fn is_newline(chr: u8) -> bool { 115 chr == b'\n' 116} 117