16855e09eSopenharmony_ci//! Character specific parsers and combinators 26855e09eSopenharmony_ci//! 36855e09eSopenharmony_ci//! Functions recognizing specific characters 46855e09eSopenharmony_ci 56855e09eSopenharmony_ci#[cfg(test)] 66855e09eSopenharmony_cimod tests; 76855e09eSopenharmony_ci 86855e09eSopenharmony_cipub mod complete; 96855e09eSopenharmony_cipub mod streaming; 106855e09eSopenharmony_ci 116855e09eSopenharmony_ci/// Tests if byte is ASCII alphabetic: A-Z, a-z 126855e09eSopenharmony_ci/// 136855e09eSopenharmony_ci/// # Example 146855e09eSopenharmony_ci/// 156855e09eSopenharmony_ci/// ``` 166855e09eSopenharmony_ci/// # use nom::character::is_alphabetic; 176855e09eSopenharmony_ci/// assert_eq!(is_alphabetic(b'9'), false); 186855e09eSopenharmony_ci/// assert_eq!(is_alphabetic(b'a'), true); 196855e09eSopenharmony_ci/// ``` 206855e09eSopenharmony_ci#[inline] 216855e09eSopenharmony_cipub fn is_alphabetic(chr: u8) -> bool { 226855e09eSopenharmony_ci (chr >= 0x41 && chr <= 0x5A) || (chr >= 0x61 && chr <= 0x7A) 236855e09eSopenharmony_ci} 246855e09eSopenharmony_ci 256855e09eSopenharmony_ci/// Tests if byte is ASCII digit: 0-9 266855e09eSopenharmony_ci/// 276855e09eSopenharmony_ci/// # Example 286855e09eSopenharmony_ci/// 296855e09eSopenharmony_ci/// ``` 306855e09eSopenharmony_ci/// # use nom::character::is_digit; 316855e09eSopenharmony_ci/// assert_eq!(is_digit(b'a'), false); 326855e09eSopenharmony_ci/// assert_eq!(is_digit(b'9'), true); 336855e09eSopenharmony_ci/// ``` 346855e09eSopenharmony_ci#[inline] 356855e09eSopenharmony_cipub fn is_digit(chr: u8) -> bool { 366855e09eSopenharmony_ci chr >= 0x30 && chr <= 0x39 376855e09eSopenharmony_ci} 386855e09eSopenharmony_ci 396855e09eSopenharmony_ci/// Tests if byte is ASCII hex digit: 0-9, A-F, a-f 406855e09eSopenharmony_ci/// 416855e09eSopenharmony_ci/// # Example 426855e09eSopenharmony_ci/// 436855e09eSopenharmony_ci/// ``` 446855e09eSopenharmony_ci/// # use nom::character::is_hex_digit; 456855e09eSopenharmony_ci/// assert_eq!(is_hex_digit(b'a'), true); 466855e09eSopenharmony_ci/// assert_eq!(is_hex_digit(b'9'), true); 476855e09eSopenharmony_ci/// assert_eq!(is_hex_digit(b'A'), true); 486855e09eSopenharmony_ci/// assert_eq!(is_hex_digit(b'x'), false); 496855e09eSopenharmony_ci/// ``` 506855e09eSopenharmony_ci#[inline] 516855e09eSopenharmony_cipub fn is_hex_digit(chr: u8) -> bool { 526855e09eSopenharmony_ci (chr >= 0x30 && chr <= 0x39) || (chr >= 0x41 && chr <= 0x46) || (chr >= 0x61 && chr <= 0x66) 536855e09eSopenharmony_ci} 546855e09eSopenharmony_ci 556855e09eSopenharmony_ci/// Tests if byte is ASCII octal digit: 0-7 566855e09eSopenharmony_ci/// 576855e09eSopenharmony_ci/// # Example 586855e09eSopenharmony_ci/// 596855e09eSopenharmony_ci/// ``` 606855e09eSopenharmony_ci/// # use nom::character::is_oct_digit; 616855e09eSopenharmony_ci/// assert_eq!(is_oct_digit(b'a'), false); 626855e09eSopenharmony_ci/// assert_eq!(is_oct_digit(b'9'), false); 636855e09eSopenharmony_ci/// assert_eq!(is_oct_digit(b'6'), true); 646855e09eSopenharmony_ci/// ``` 656855e09eSopenharmony_ci#[inline] 666855e09eSopenharmony_cipub fn is_oct_digit(chr: u8) -> bool { 676855e09eSopenharmony_ci chr >= 0x30 && chr <= 0x37 686855e09eSopenharmony_ci} 696855e09eSopenharmony_ci 706855e09eSopenharmony_ci/// Tests if byte is ASCII alphanumeric: A-Z, a-z, 0-9 716855e09eSopenharmony_ci/// 726855e09eSopenharmony_ci/// # Example 736855e09eSopenharmony_ci/// 746855e09eSopenharmony_ci/// ``` 756855e09eSopenharmony_ci/// # use nom::character::is_alphanumeric; 766855e09eSopenharmony_ci/// assert_eq!(is_alphanumeric(b'-'), false); 776855e09eSopenharmony_ci/// assert_eq!(is_alphanumeric(b'a'), true); 786855e09eSopenharmony_ci/// assert_eq!(is_alphanumeric(b'9'), true); 796855e09eSopenharmony_ci/// assert_eq!(is_alphanumeric(b'A'), true); 806855e09eSopenharmony_ci/// ``` 816855e09eSopenharmony_ci#[inline] 826855e09eSopenharmony_cipub fn is_alphanumeric(chr: u8) -> bool { 836855e09eSopenharmony_ci is_alphabetic(chr) || is_digit(chr) 846855e09eSopenharmony_ci} 856855e09eSopenharmony_ci 866855e09eSopenharmony_ci/// Tests if byte is ASCII space or tab 876855e09eSopenharmony_ci/// 886855e09eSopenharmony_ci/// # Example 896855e09eSopenharmony_ci/// 906855e09eSopenharmony_ci/// ``` 916855e09eSopenharmony_ci/// # use nom::character::is_space; 926855e09eSopenharmony_ci/// assert_eq!(is_space(b'\n'), false); 936855e09eSopenharmony_ci/// assert_eq!(is_space(b'\r'), false); 946855e09eSopenharmony_ci/// assert_eq!(is_space(b' '), true); 956855e09eSopenharmony_ci/// assert_eq!(is_space(b'\t'), true); 966855e09eSopenharmony_ci/// ``` 976855e09eSopenharmony_ci#[inline] 986855e09eSopenharmony_cipub fn is_space(chr: u8) -> bool { 996855e09eSopenharmony_ci chr == b' ' || chr == b'\t' 1006855e09eSopenharmony_ci} 1016855e09eSopenharmony_ci 1026855e09eSopenharmony_ci/// Tests if byte is ASCII newline: \n 1036855e09eSopenharmony_ci/// 1046855e09eSopenharmony_ci/// # Example 1056855e09eSopenharmony_ci/// 1066855e09eSopenharmony_ci/// ``` 1076855e09eSopenharmony_ci/// # use nom::character::is_newline; 1086855e09eSopenharmony_ci/// assert_eq!(is_newline(b'\n'), true); 1096855e09eSopenharmony_ci/// assert_eq!(is_newline(b'\r'), false); 1106855e09eSopenharmony_ci/// assert_eq!(is_newline(b' '), false); 1116855e09eSopenharmony_ci/// assert_eq!(is_newline(b'\t'), false); 1126855e09eSopenharmony_ci/// ``` 1136855e09eSopenharmony_ci#[inline] 1146855e09eSopenharmony_cipub fn is_newline(chr: u8) -> bool { 1156855e09eSopenharmony_ci chr == b'\n' 1166855e09eSopenharmony_ci} 117