mirror of
https://gitee.com/openharmony/third_party_rust_nom
synced 2024-11-23 07:29:54 +00:00
remove macros from character module
This commit is contained in:
parent
55279a2a31
commit
977f93fed4
@ -91,16 +91,6 @@ macro_rules! is_a (
|
||||
/// * The first argument matches the normal characters (it must not accept the control character)
|
||||
/// * The second argument is the control character (like `\` in most languages)
|
||||
/// * The third argument matches the escaped characters
|
||||
/// # Example
|
||||
/// ```
|
||||
/// # #[macro_use] extern crate nom;
|
||||
/// # use nom::character::complete::digit1;
|
||||
/// # fn main() {
|
||||
/// named!(esc, escaped!(call!(digit1), '\\', one_of!("\"n\\")));
|
||||
/// assert_eq!(esc(&b"123;"[..]), Ok((&b";"[..], &b"123"[..])));
|
||||
/// assert_eq!(esc(&b"12\\\"34;"[..]), Ok((&b";"[..], &b"12\\\"34"[..])));
|
||||
/// # }
|
||||
/// ```
|
||||
#[macro_export(local_inner_macros)]
|
||||
macro_rules! escaped (
|
||||
($i:expr, $submac1:ident!( $($args:tt)* ), $control_char: expr, $submac2:ident!( $($args2:tt)*) ) => (
|
||||
|
@ -1,112 +0,0 @@
|
||||
/// Character level parsers
|
||||
|
||||
/// Matches one of the provided characters.
|
||||
///
|
||||
/// # Example
|
||||
/// ```
|
||||
/// # #[macro_use] extern crate nom;
|
||||
/// # fn main() {
|
||||
/// named!(simple<char>, one_of!(&b"abc"[..]));
|
||||
/// assert_eq!(simple(b"a123"), Ok((&b"123"[..], 'a')));
|
||||
///
|
||||
/// named!(a_or_b<&str, char>, one_of!("ab汉"));
|
||||
/// assert_eq!(a_or_b("汉jiosfe"), Ok(("jiosfe", '汉')));
|
||||
/// # }
|
||||
/// ```
|
||||
#[macro_export(local_inner_macros)]
|
||||
macro_rules! one_of (
|
||||
($i:expr, $inp: expr) => ( $crate::character::streaming::one_of($inp)($i) );
|
||||
);
|
||||
|
||||
/// Matches anything but the provided characters.
|
||||
///
|
||||
/// # Example
|
||||
/// ```
|
||||
/// # #[macro_use] extern crate nom;
|
||||
/// # use nom::{Err,error::ErrorKind};
|
||||
/// # fn main() {
|
||||
/// named!(no_letter_a<char>, none_of!(&b"abc"[..]));
|
||||
/// assert_eq!(no_letter_a(b"123"), Ok((&b"23"[..], '1')));
|
||||
///
|
||||
/// named!(err_on_single_quote<char>, none_of!(&b"'"[..]));
|
||||
/// assert_eq!(err_on_single_quote(b"'jiosfe"), Err(Err::Error(error_position!(&b"'jiosfe"[..], ErrorKind::NoneOf))));
|
||||
/// # }
|
||||
/// ```
|
||||
#[macro_export(local_inner_macros)]
|
||||
macro_rules! none_of (
|
||||
($i:expr, $inp: expr) => ( $crate::character::streaming::none_of($inp)($i) );
|
||||
);
|
||||
|
||||
/// Matches one character: `char!(char) => &[u8] -> IResult<&[u8], char>`.
|
||||
///
|
||||
/// # Example
|
||||
/// ```
|
||||
/// # #[macro_use] extern crate nom;
|
||||
/// # use nom::{Err,error::ErrorKind};
|
||||
/// # fn main() {
|
||||
/// named!(match_letter_a<char>, char!('a'));
|
||||
/// assert_eq!(match_letter_a(b"abc"), Ok((&b"bc"[..],'a')));
|
||||
///
|
||||
/// assert_eq!(match_letter_a(b"123cdef"), Err(Err::Error(error_position!(&b"123cdef"[..], ErrorKind::Char))));
|
||||
/// # }
|
||||
/// ```
|
||||
#[macro_export(local_inner_macros)]
|
||||
macro_rules! char (
|
||||
($i:expr, $c: expr) => ( $crate::character::streaming::char($c)($i) );
|
||||
);
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use crate::error::ErrorKind;
|
||||
use crate::internal::Err;
|
||||
|
||||
#[test]
|
||||
fn one_of() {
|
||||
named!(f<char>, one_of!("ab"));
|
||||
|
||||
let a = &b"abcd"[..];
|
||||
assert_eq!(f(a), Ok((&b"bcd"[..], 'a')));
|
||||
|
||||
let b = &b"cde"[..];
|
||||
assert_eq!(f(b), Err(Err::Error(error_position!(b, ErrorKind::OneOf))));
|
||||
|
||||
named!(utf8(&str) -> char,
|
||||
one_of!("+\u{FF0B}"));
|
||||
|
||||
assert!(utf8("+").is_ok());
|
||||
assert!(utf8("\u{FF0B}").is_ok());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn none_of() {
|
||||
named!(f<char>, none_of!("ab"));
|
||||
|
||||
let a = &b"abcd"[..];
|
||||
assert_eq!(f(a), Err(Err::Error(error_position!(a, ErrorKind::NoneOf))));
|
||||
|
||||
let b = &b"cde"[..];
|
||||
assert_eq!(f(b), Ok((&b"de"[..], 'c')));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn char() {
|
||||
named!(f<char>, char!('c'));
|
||||
|
||||
let a = &b"abcd"[..];
|
||||
assert_eq!(f(a), Err(Err::Error(error_position!(a, ErrorKind::Char))));
|
||||
|
||||
let b = &b"cde"[..];
|
||||
assert_eq!(f(b), Ok((&b"de"[..], 'c')));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn char_str() {
|
||||
named!(f<&str, char>, char!('c'));
|
||||
|
||||
let a = &"abcd"[..];
|
||||
assert_eq!(f(a), Err(Err::Error(error_position!(a, ErrorKind::Char))));
|
||||
|
||||
let b = &"cde"[..];
|
||||
assert_eq!(f(b), Ok((&"de"[..], 'c')));
|
||||
}
|
||||
}
|
@ -2,8 +2,8 @@
|
||||
//!
|
||||
//! Functions recognizing specific characters
|
||||
|
||||
#[macro_use]
|
||||
mod macros;
|
||||
#[cfg(test)]
|
||||
mod tests;
|
||||
|
||||
pub mod complete;
|
||||
pub mod streaming;
|
||||
|
62
src/character/tests.rs
Normal file
62
src/character/tests.rs
Normal file
@ -0,0 +1,62 @@
|
||||
use super::streaming::*;
|
||||
use crate::error::ErrorKind;
|
||||
use crate::internal::{Err, IResult};
|
||||
|
||||
#[test]
|
||||
fn one_of_test() {
|
||||
fn f(i: &[u8]) -> IResult<&[u8], char> {
|
||||
one_of("ab")(i)
|
||||
}
|
||||
|
||||
let a = &b"abcd"[..];
|
||||
assert_eq!(f(a), Ok((&b"bcd"[..], 'a')));
|
||||
|
||||
let b = &b"cde"[..];
|
||||
assert_eq!(f(b), Err(Err::Error(error_position!(b, ErrorKind::OneOf))));
|
||||
|
||||
fn utf8(i: &str) -> IResult<&str, char> {
|
||||
one_of("+\u{FF0B}")(i)
|
||||
}
|
||||
|
||||
assert!(utf8("+").is_ok());
|
||||
assert!(utf8("\u{FF0B}").is_ok());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn none_of_test() {
|
||||
fn f(i: &[u8]) -> IResult<&[u8], char> {
|
||||
none_of("ab")(i)
|
||||
}
|
||||
|
||||
let a = &b"abcd"[..];
|
||||
assert_eq!(f(a), Err(Err::Error(error_position!(a, ErrorKind::NoneOf))));
|
||||
|
||||
let b = &b"cde"[..];
|
||||
assert_eq!(f(b), Ok((&b"de"[..], 'c')));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn char_byteslice() {
|
||||
fn f(i: &[u8]) -> IResult<&[u8], char> {
|
||||
char('c')(i)
|
||||
}
|
||||
|
||||
let a = &b"abcd"[..];
|
||||
assert_eq!(f(a), Err(Err::Error(error_position!(a, ErrorKind::Char))));
|
||||
|
||||
let b = &b"cde"[..];
|
||||
assert_eq!(f(b), Ok((&b"de"[..], 'c')));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn char_str() {
|
||||
fn f(i: &str) -> IResult<&str, char> {
|
||||
char('c')(i)
|
||||
}
|
||||
|
||||
let a = &"abcd"[..];
|
||||
assert_eq!(f(a), Err(Err::Error(error_position!(a, ErrorKind::Char))));
|
||||
|
||||
let b = &"cde"[..];
|
||||
assert_eq!(f(b), Ok((&"de"[..], 'c')));
|
||||
}
|
Loading…
Reference in New Issue
Block a user