29 lines
732 B
Rust
29 lines
732 B
Rust
use nom::bytes::complete::escaped;
|
|
use nom::character::complete::digit1;
|
|
use nom::character::complete::one_of;
|
|
use nom::{error::ErrorKind, Err, IResult};
|
|
|
|
fn esc(s: &str) -> IResult<&str, &str, (&str, ErrorKind)> {
|
|
escaped(digit1, '\\', one_of("\"n\\"))(s)
|
|
}
|
|
|
|
#[cfg(feature = "alloc")]
|
|
fn esc_trans(s: &str) -> IResult<&str, String, (&str, ErrorKind)> {
|
|
use nom::bytes::complete::{escaped_transform, tag};
|
|
escaped_transform(digit1, '\\', tag("n"))(s)
|
|
}
|
|
|
|
#[test]
|
|
fn test_escaped() {
|
|
assert_eq!(esc("abcd"), Err(Err::Error(("abcd", ErrorKind::Escaped))));
|
|
}
|
|
|
|
#[test]
|
|
#[cfg(feature = "alloc")]
|
|
fn test_escaped_transform() {
|
|
assert_eq!(
|
|
esc_trans("abcd"),
|
|
Err(Err::Error(("abcd", ErrorKind::EscapedTransform)))
|
|
);
|
|
}
|