aboutsummaryrefslogtreecommitdiff
path: root/src/regexp.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/regexp.rs')
-rw-r--r--src/regexp.rs1090
1 files changed, 0 insertions, 1090 deletions
diff --git a/src/regexp.rs b/src/regexp.rs
deleted file mode 100644
index fd165e1..0000000
--- a/src/regexp.rs
+++ /dev/null
@@ -1,1090 +0,0 @@
-#[doc(hidden)]
-#[macro_export]
-macro_rules! regex (
- ($re: ident, $s:expr) => (
- lazy_static! {
- static ref $re: $crate::lib::regex::Regex = $crate::lib::regex::Regex::new($s).unwrap();
- }
- );
-);
-
-#[doc(hidden)]
-#[macro_export]
-macro_rules! regex_bytes (
- ($re: ident, $s:expr) => (
- lazy_static! {
- static ref $re: $crate::lib::regex::bytes::Regex = $crate::lib::regex::bytes::Regex::new($s).unwrap();
- }
- );
-);
-
-/// `re_match!(regexp) => &[T] -> IResult<&[T], &[T]>`
-/// Returns the whole input if a match is found
-///
-/// requires the `regexp` feature
-#[macro_export(local_inner_macros)]
-macro_rules! re_match (
- ($i:expr, $re:expr) => (
- {
- use $crate::lib::std::result::Result::*;
- use $crate::{Err,error::ErrorKind,IResult};
-
- use $crate::InputLength;
- use $crate::Slice;
- let re = $crate::lib::regex::Regex::new($re).unwrap();
- if re.is_match(&$i) {
- Ok(($i.slice($i.input_len()..), $i))
- } else {
- let res: IResult<_,_> = Err(Err::Error(error_position!($i, ErrorKind::RegexpMatch)));
- res
- }
- }
- )
-);
-
-#[cfg(feature = "regexp_macros")]
-/// `re_match_static!(regexp) => &[T] -> IResult<&[T], &[T]>`
-/// Returns the whole input if a match is found. Regular expression calculated at compile time
-///
-/// requires the `regexp_macros` feature
-#[macro_export(local_inner_macros)]
-macro_rules! re_match_static (
- ($i:expr, $re:expr) => (
- {
- use $crate::lib::std::result::Result::*;
- use $crate::{Err,error::ErrorKind,IResult};
-
- use $crate::InputLength;
- use $crate::Slice;
- regex!(RE, $re);
- if RE.is_match(&$i) {
- Ok(($i.slice($i.input_len()..), $i))
- } else {
- let res: IResult<_,_> = Err(Err::Error(error_position!($i, ErrorKind::RegexpMatch)));
- res
- }
- }
- )
-);
-
-/// `re_bytes_match!(regexp) => &[T] -> IResult<&[T], &[T]>`
-/// Returns the whole input if a match is found
-///
-/// requires the `regexp` feature
-#[macro_export(local_inner_macros)]
-macro_rules! re_bytes_match (
- ($i:expr, $re:expr) => (
- {
- use $crate::lib::std::result::Result::*;
- use $crate::{Err,error::ErrorKind,IResult};
-
- use $crate::InputLength;
- use $crate::Slice;
- let re = $crate::lib::regex::bytes::Regex::new($re).unwrap();
- if re.is_match(&$i) {
- Ok(($i.slice($i.input_len()..), $i))
- } else {
- let res: IResult<_,_> = Err(Err::Error(error_position!($i, ErrorKind::RegexpMatch)));
- res
- }
- }
- )
-);
-
-#[cfg(feature = "regexp_macros")]
-/// `re_bytes_match_static!(regexp) => &[T] -> IResult<&[T], &[T]>`
-/// Returns the whole input if a match is found. Regular expression calculated at compile time
-///
-/// requires the `regexp_macros` feature
-#[macro_export(local_inner_macros)]
-macro_rules! re_bytes_match_static (
- ($i:expr, $re:expr) => (
- {
- use $crate::lib::std::result::Result::*;
- use $crate::{Err,error::ErrorKind,IResult};
-
- use $crate::InputLength;
- use $crate::Slice;
- regex_bytes!(RE, $re);
- if RE.is_match(&$i) {
- Ok(($i.slice($i.input_len()..), $i))
- } else {
- let res: IResult<_,_> = Err(Err::Error(error_position!($i, ErrorKind::RegexpMatch)));
- res
- }
- }
- )
-);
-
-/// `re_find!(regexp) => &[T] -> IResult<&[T], &[T]>`
-/// Returns the first match
-///
-/// requires the `regexp` feature
-#[macro_export(local_inner_macros)]
-macro_rules! re_find (
- ($i:expr, $re:expr) => (
- {
- use $crate::lib::std::result::Result::*;
- use $crate::{Err,error::ErrorKind,IResult};
-
- use $crate::Slice;
- let re = $crate::lib::regex::Regex::new($re).unwrap();
- if let Some(m) = re.find(&$i) {
- Ok(($i.slice(m.end()..), $i.slice(m.start()..m.end())))
- } else {
- let res: IResult<_,_> = Err(Err::Error(error_position!($i, ErrorKind::RegexpFind)));
- res
- }
- }
- )
-);
-
-#[cfg(feature = "regexp_macros")]
-/// `re_find_static!(regexp) => &[T] -> IResult<&[T], &[T]>`
-/// Returns the first match. Regular expression calculated at compile time
-///
-/// requires the `regexp_macros` feature
-#[macro_export(local_inner_macros)]
-macro_rules! re_find_static (
- ($i:expr, $re:expr) => (
- {
- use $crate::lib::std::result::Result::*;
- use $crate::{Err,error::ErrorKind,IResult};
-
- use $crate::Slice;
- regex!(RE, $re);
- if let Some(m) = RE.find(&$i) {
- Ok(($i.slice(m.end()..), $i.slice(m.start()..m.end())))
- } else {
- let res: IResult<_,_> = Err(Err::Error(error_position!($i, ErrorKind::RegexpFind)));
- res
- }
- }
-
- )
-);
-
-/// `re_bytes_find!(regexp) => &[T] -> IResult<&[T], &[T]>`
-/// Returns the first match
-///
-/// requires the `regexp` feature
-#[macro_export(local_inner_macros)]
-macro_rules! re_bytes_find (
- ($i:expr, $re:expr) => (
- {
- use $crate::lib::std::result::Result::*;
- use $crate::{Err,error::ErrorKind,IResult};
-
- use $crate::Slice;
- let re = $crate::lib::regex::bytes::Regex::new($re).unwrap();
- if let Some(m) = re.find(&$i) {
- Ok(($i.slice(m.end()..), $i.slice(m.start()..m.end())))
- } else {
- let res: IResult<_,_> = Err(Err::Error(error_position!($i, ErrorKind::RegexpFind)));
- res
- }
- }
- )
-);
-
-#[cfg(feature = "regexp_macros")]
-/// `re_bytes_find!(regexp) => &[T] -> IResult<&[T], &[T]>`
-/// Returns the first match. Regular expression calculated at compile time
-///
-/// requires the `regexp_macros` feature
-#[macro_export(local_inner_macros)]
-macro_rules! re_bytes_find_static (
- ($i:expr, $re:expr) => (
- {
- use $crate::lib::std::result::Result::*;
- use $crate::{Err,error::ErrorKind,IResult};
-
- use $crate::Slice;
- regex_bytes!(RE, $re);
- if let Some(m) = RE.find(&$i) {
- Ok(($i.slice(m.end()..), $i.slice(m.start()..m.end())))
- } else {
- let res: IResult<_,_> = Err(Err::Error(error_position!($i, ErrorKind::RegexpFind)));
- res
- }
- }
-
- )
-);
-
-/// `re_matches!(regexp) => &[T] -> IResult<&[T], Vec<&[T]>>`
-/// Returns all the matched parts
-///
-/// requires the `regexp` feature
-#[macro_export(local_inner_macros)]
-macro_rules! re_matches (
- ($i:expr, $re:expr) => (
- {
- use $crate::lib::std::result::Result::*;
- use $crate::{Err,error::ErrorKind,IResult};
-
- use $crate::Slice;
- let re = $crate::lib::regex::Regex::new($re).unwrap();
- let v: Vec<_> = re.find_iter(&$i).map(|m| $i.slice(m.start()..m.end())).collect();
- if v.len() != 0 {
- let offset = {
- let end = v.last().unwrap();
- end.as_ptr() as usize + end.len() - $i.as_ptr() as usize
- };
- Ok(($i.slice(offset..), v))
- } else {
- let res: IResult<_,_> = Err(Err::Error(error_position!($i, ErrorKind::RegexpMatches)));
- res
- }
- }
- )
-);
-
-#[cfg(feature = "regexp_macros")]
-/// `re_matches_static!(regexp) => &[T] -> IResult<&[T], Vec<&[T]>>`
-/// Returns all the matched parts. Regular expression calculated at compile time
-///
-/// requires the `regexp_macros` feature
-#[macro_export(local_inner_macros)]
-macro_rules! re_matches_static (
- ($i:expr, $re:expr) => (
- {
- use $crate::lib::std::result::Result::*;
- use $crate::{Err,error::ErrorKind,IResult};
-
- use $crate::Slice;
- regex!(RE, $re);
- let v: Vec<_> = RE.find_iter(&$i).map(|m| $i.slice(m.start()..m.end())).collect();
- if v.len() != 0 {
- let offset = {
- let end = v.last().unwrap();
- end.as_ptr() as usize + end.len() - $i.as_ptr() as usize
- };
- Ok(($i.slice(offset..), v))
- } else {
- let res: IResult<_,_> = Err(Err::Error(error_position!($i, ErrorKind::RegexpMatches)));
- res
- }
- }
- )
-);
-
-/// `re_bytes_matches!(regexp) => &[T] -> IResult<&[T], Vec<&[T]>>`
-/// Returns all the matched parts
-///
-/// requires the `regexp` feature
-#[macro_export(local_inner_macros)]
-macro_rules! re_bytes_matches (
- ($i:expr, $re:expr) => (
- {
- use $crate::lib::std::result::Result::*;
- use $crate::{Err,error::ErrorKind,IResult};
-
- use $crate::Slice;
- let re = $crate::lib::regex::bytes::Regex::new($re).unwrap();
- let v: Vec<_> = re.find_iter(&$i).map(|m| $i.slice(m.start()..m.end())).collect();
- if v.len() != 0 {
- let offset = {
- let end = v.last().unwrap();
- end.as_ptr() as usize + end.len() - $i.as_ptr() as usize
- };
- Ok(($i.slice(offset..), v))
- } else {
- let res: IResult<_,_> = Err(Err::Error(error_position!($i, ErrorKind::RegexpMatches)));
- res
- }
- }
- )
-);
-
-#[cfg(feature = "regexp_macros")]
-/// `re_bytes_matches_static!(regexp) => &[T] -> IResult<&[T], Vec<&[T]>>`
-/// Returns all the matched parts. Regular expression calculated at compile time
-///
-/// requires the `regexp_macros` feature
-#[macro_export(local_inner_macros)]
-macro_rules! re_bytes_matches_static (
- ($i:expr, $re:expr) => (
- {
- use $crate::lib::std::result::Result::*;
- use $crate::{Err,error::ErrorKind,IResult};
-
- use $crate::Slice;
- regex_bytes!(RE, $re);
- let v: Vec<_> = RE.find_iter(&$i).map(|m| $i.slice(m.start()..m.end())).collect();
- if v.len() != 0 {
- let offset = {
- let end = v.last().unwrap();
- end.as_ptr() as usize + end.len() - $i.as_ptr() as usize
- };
- Ok(($i.slice(offset..), v))
- } else {
- let res: IResult<_,_> = Err(Err::Error(error_position!($i, ErrorKind::RegexpMatches)));
- res
- }
- }
- )
-);
-
-/// `re_capture!(regexp) => &[T] -> IResult<&[T], Vec<&[T]>>`
-/// Returns the first capture group
-///
-/// requires the `regexp` feature
-#[macro_export(local_inner_macros)]
-macro_rules! re_capture (
- ($i:expr, $re:expr) => (
- {
- use $crate::lib::std::result::Result::*;
- use $crate::{Err,error::ErrorKind,IResult};
-
- use $crate::Slice;
- let re = $crate::lib::regex::Regex::new($re).unwrap();
- if let Some(c) = re.captures(&$i) {
- let v:Vec<_> = c.iter().filter(|el| el.is_some()).map(|el| el.unwrap()).map(|m| $i.slice(m.start()..m.end())).collect();
- let offset = {
- let end = v.last().unwrap();
- end.as_ptr() as usize + end.len() - $i.as_ptr() as usize
- };
- Ok(($i.slice(offset..), v))
- } else {
- let res: IResult<_,_> = Err(Err::Error(error_position!($i, ErrorKind::RegexpCapture)));
- res
- }
- }
- )
-);
-
-#[cfg(feature = "regexp_macros")]
-/// `re_capture_static!(regexp) => &[T] -> IResult<&[T], Vec<&[T]>>`
-/// Returns the first capture group. Regular expression calculated at compile time
-///
-/// requires the `regexp_macros` feature
-#[macro_export(local_inner_macros)]
-macro_rules! re_capture_static (
- ($i:expr, $re:expr) => (
- {
- use $crate::lib::std::result::Result::*;
- use $crate::{Err,error::ErrorKind,IResult};
-
- use $crate::Slice;
- regex!(RE, $re);
- if let Some(c) = RE.captures(&$i) {
- let v:Vec<_> = c.iter().filter(|el| el.is_some()).map(|el| el.unwrap()).map(|m| $i.slice(m.start()..m.end())).collect();
- let offset = {
- let end = v.last().unwrap();
- end.as_ptr() as usize + end.len() - $i.as_ptr() as usize
- };
- Ok(($i.slice(offset..), v))
- } else {
- let res: IResult<_,_> = Err(Err::Error(error_position!($i, ErrorKind::RegexpCapture)));
- res
- }
- }
- )
-);
-
-/// `re_bytes_capture!(regexp) => &[T] -> IResult<&[T], Vec<&[T]>>`
-/// Returns the first capture group
-///
-/// requires the `regexp` feature
-#[macro_export(local_inner_macros)]
-macro_rules! re_bytes_capture (
- ($i:expr, $re:expr) => (
- {
- use $crate::lib::std::result::Result::*;
- use $crate::{Err,error::ErrorKind,IResult};
-
- use $crate::Slice;
- let re = $crate::lib::regex::bytes::Regex::new($re).unwrap();
- if let Some(c) = re.captures(&$i) {
- let v:Vec<_> = c.iter().filter(|el| el.is_some()).map(|el| el.unwrap()).map(|m| $i.slice(m.start()..m.end())).collect();
- let offset = {
- let end = v.last().unwrap();
- end.as_ptr() as usize + end.len() - $i.as_ptr() as usize
- };
- Ok(($i.slice(offset..), v))
- } else {
- let res: IResult<_,_> = Err(Err::Error(error_position!($i, ErrorKind::RegexpCapture)));
- res
- }
- }
- )
-);
-
-#[cfg(feature = "regexp_macros")]
-/// `re_bytes_capture_static!(regexp) => &[T] -> IResult<&[T], Vec<&[T]>>`
-/// Returns the first capture group. Regular expression calculated at compile time
-///
-/// requires the `regexp_macros` feature
-#[macro_export(local_inner_macros)]
-macro_rules! re_bytes_capture_static (
- ($i:expr, $re:expr) => (
- {
- use $crate::lib::std::result::Result::*;
- use $crate::{Err,error::ErrorKind,IResult};
-
- use $crate::Slice;
- regex_bytes!(RE, $re);
- if let Some(c) = RE.captures(&$i) {
- let v:Vec<_> = c.iter().filter(|el| el.is_some()).map(|el| el.unwrap()).map(|m| $i.slice(m.start()..m.end())).collect();
- let offset = {
- let end = v.last().unwrap();
- end.as_ptr() as usize + end.len() - $i.as_ptr() as usize
- };
- Ok(($i.slice(offset..), v))
- } else {
- let res: IResult<_,_> = Err(Err::Error(error_position!($i, ErrorKind::RegexpCapture)));
- res
- }
- }
- )
-);
-
-/// `re_captures!(regexp) => &[T] -> IResult<&[T], Vec<Vec<&[T]>>>`
-/// Returns all the capture groups
-///
-/// requires the `regexp` feature
-#[macro_export(local_inner_macros)]
-macro_rules! re_captures (
- ($i:expr, $re:expr) => (
- {
- use $crate::lib::std::result::Result::*;
- use $crate::{Err,error::ErrorKind,IResult};
-
- use $crate::Slice;
- let re = $crate::lib::regex::Regex::new($re).unwrap();
- let v:Vec<Vec<_>> = re.captures_iter(&$i)
- .map(|c| c.iter().filter(|el| el.is_some()).map(|el| el.unwrap())
- .map(|m| $i.slice(m.start()..m.end())).collect()).collect();
- if v.len() != 0 {
- let offset = {
- let end = v.last().unwrap().last().unwrap();
- end.as_ptr() as usize + end.len() - $i.as_ptr() as usize
- };
- Ok(($i.slice(offset..), v))
- } else {
- let res: IResult<_,_> = Err(Err::Error(error_position!($i, ErrorKind::RegexpCapture)));
- res
- }
- }
- )
-);
-
-#[cfg(feature = "regexp_macros")]
-/// `re_captures_static!(regexp) => &[T] -> IResult<&[T], Vec<Vec<&[T]>>>`
-/// Returns all the capture groups. Regular expression calculated at compile time
-///
-/// requires the `regexp_macros` feature
-#[macro_export(local_inner_macros)]
-macro_rules! re_captures_static (
- ($i:expr, $re:expr) => (
- {
- use $crate::lib::std::result::Result::*;
- use $crate::{Err,error::ErrorKind,IResult};
-
- use $crate::Slice;
- regex!(RE, $re);
- let v:Vec<Vec<_>> = RE.captures_iter(&$i)
- .map(|c| c.iter().filter(|el| el.is_some()).map(|el| el.unwrap()).map(|m| $i.slice(m.start()..m.end())).collect()).collect();
- if v.len() != 0 {
- let offset = {
- let end = v.last().unwrap().last().unwrap();
- end.as_ptr() as usize + end.len() - $i.as_ptr() as usize
- };
- Ok(($i.slice(offset..), v))
- } else {
- let res: IResult<_,_> = Err(Err::Error(error_position!($i, ErrorKind::RegexpCapture)));
- res
- }
- }
- )
-);
-
-/// `re_bytes_captures!(regexp) => &[T] -> IResult<&[T], Vec<Vec<&[T]>>>`
-/// Returns all the capture groups
-///
-/// requires the `regexp` feature
-#[macro_export(local_inner_macros)]
-macro_rules! re_bytes_captures (
- ($i:expr, $re:expr) => (
- {
- use $crate::lib::std::result::Result::*;
- use $crate::{Err,error::ErrorKind,IResult};
-
- use $crate::Slice;
- let re = $crate::lib::regex::bytes::Regex::new($re).unwrap();
- let v:Vec<Vec<_>> = re.captures_iter(&$i)
- .map(|c| c.iter().filter(|el| el.is_some()).map(|el| el.unwrap()).map(|m| $i.slice(m.start()..m.end())).collect()).collect();
- if v.len() != 0 {
- let offset = {
- let end = v.last().unwrap().last().unwrap();
- end.as_ptr() as usize + end.len() - $i.as_ptr() as usize
- };
- Ok(($i.slice(offset..), v))
- } else {
- let res: IResult<_,_> = Err(Err::Error(error_position!($i, ErrorKind::RegexpCapture)));
- res
- }
- }
- )
-);
-
-#[cfg(feature = "regexp_macros")]
-/// `re_bytes_captures_static!(regexp) => &[T] -> IResult<&[T], Vec<Vec<&[T]>>>`
-/// Returns all the capture groups. Regular expression calculated at compile time
-///
-/// requires the `regexp_macros` feature
-#[macro_export(local_inner_macros)]
-macro_rules! re_bytes_captures_static (
- ($i:expr, $re:expr) => (
- {
- use $crate::lib::std::result::Result::*;
- use $crate::{Err,error::ErrorKind,IResult};
-
- use $crate::Slice;
- regex_bytes!(RE, $re);
- let v:Vec<Vec<_>> = RE.captures_iter(&$i)
- .map(|c| c.iter().filter(|el| el.is_some()).map(|el| el.unwrap()).map(|m| $i.slice(m.start()..m.end())).collect()).collect();
- if v.len() != 0 {
- let offset = {
- let end = v.last().unwrap().last().unwrap();
- end.as_ptr() as usize + end.len() - $i.as_ptr() as usize
- };
- Ok(($i.slice(offset..), v))
- } else {
- let res: IResult<_,_> = Err(Err::Error(error_position!($i, ErrorKind::RegexpCapture)));
- res
- }
- }
- )
-);
-#[cfg(test)]
-mod tests {
- #[cfg(feature = "alloc")]
- use crate::lib::std::vec::Vec;
- use crate::error::ErrorKind;
- use crate::internal::Err;
-
- #[test]
- fn re_match() {
- named!(rm<&str,&str>, re_match!(r"^\d{4}-\d{2}-\d{2}"));
- assert_eq!(rm("2015-09-07"), Ok(("", "2015-09-07")));
- assert_eq!(
- rm("blah"),
- Err(Err::Error(error_position!(
- &"blah"[..],
- ErrorKind::RegexpMatch
- ),))
- );
- assert_eq!(rm("2015-09-07blah"), Ok(("", "2015-09-07blah")));
- }
-
- #[cfg(feature = "regexp_macros")]
- #[test]
- fn re_match_static() {
- named!(rm<&str,&str>, re_match_static!(r"^\d{4}-\d{2}-\d{2}"));
- assert_eq!(rm("2015-09-07"), Ok(("", "2015-09-07")));
- assert_eq!(
- rm("blah"),
- Err(Err::Error(error_position!(
- &"blah"[..],
- ErrorKind::RegexpMatch
- ),))
- );
- assert_eq!(rm("2015-09-07blah"), Ok(("", "2015-09-07blah")));
- }
-
- #[test]
- fn re_find() {
- named!(rm<&str,&str>, re_find!(r"^\d{4}-\d{2}-\d{2}"));
- assert_eq!(rm("2015-09-07"), Ok(("", "2015-09-07")));
- assert_eq!(
- rm("blah"),
- Err(Err::Error(error_position!(
- &"blah"[..],
- ErrorKind::RegexpFind
- ),))
- );
- assert_eq!(rm("2015-09-07blah"), Ok(("blah", "2015-09-07")));
- }
-
- #[cfg(feature = "regexp_macros")]
- #[test]
- fn re_find_static() {
- named!(rm<&str,&str>, re_find_static!(r"^\d{4}-\d{2}-\d{2}"));
- assert_eq!(rm("2015-09-07"), Ok(("", "2015-09-07")));
- assert_eq!(
- rm("blah"),
- Err(Err::Error(error_position!(
- &"blah"[..],
- ErrorKind::RegexpFind
- ),))
- );
- assert_eq!(rm("2015-09-07blah"), Ok(("blah", "2015-09-07")));
- }
-
- #[cfg(feature = "alloc")]
- #[test]
- fn re_matches() {
- named!(rm< &str,Vec<&str> >, re_matches!(r"\d{4}-\d{2}-\d{2}"));
- assert_eq!(rm("2015-09-07"), Ok(("", vec!["2015-09-07"])));
- assert_eq!(
- rm("blah"),
- Err(Err::Error(error_position!(
- &"blah"[..],
- ErrorKind::RegexpMatches
- )))
- );
- assert_eq!(
- rm("aaa2015-09-07blah2015-09-09pouet"),
- Ok(("pouet", vec!["2015-09-07", "2015-09-09"]))
- );
- }
-
- #[cfg(feature = "regexp_macros")]
- #[cfg(feature = "alloc")]
- #[test]
- fn re_matches_static() {
- named!(rm< &str,Vec<&str> >, re_matches_static!(r"\d{4}-\d{2}-\d{2}"));
- assert_eq!(rm("2015-09-07"), Ok(("", vec!["2015-09-07"])));
- assert_eq!(
- rm("blah"),
- Err(Err::Error(error_position!(
- &"blah"[..],
- ErrorKind::RegexpMatches
- )))
- );
- assert_eq!(
- rm("aaa2015-09-07blah2015-09-09pouet"),
- Ok(("pouet", vec!["2015-09-07", "2015-09-09"]))
- );
- }
-
- #[cfg(feature = "alloc")]
- #[test]
- fn re_capture() {
- named!(rm< &str,Vec<&str> >, re_capture!(r"([[:alpha:]]+)\s+((\d+).(\d+).(\d+))"));
- assert_eq!(
- rm("blah nom 0.3.11pouet"),
- Ok(("pouet", vec!["nom 0.3.11", "nom", "0.3.11", "0", "3", "11"]))
- );
- assert_eq!(
- rm("blah"),
- Err(Err::Error(error_position!(
- &"blah"[..],
- ErrorKind::RegexpCapture
- )))
- );
- assert_eq!(
- rm("hello nom 0.3.11 world regex 0.1.41"),
- Ok((
- " world regex 0.1.41",
- vec!["nom 0.3.11", "nom", "0.3.11", "0", "3", "11"]
- ))
- );
- }
-
- #[cfg(feature = "alloc")]
- #[cfg(feature = "regexp_macros")]
- #[test]
- fn re_capture_static() {
- named!(rm< &str,Vec<&str> >, re_capture_static!(r"([[:alpha:]]+)\s+((\d+).(\d+).(\d+))"));
- assert_eq!(
- rm("blah nom 0.3.11pouet"),
- Ok(("pouet", vec!["nom 0.3.11", "nom", "0.3.11", "0", "3", "11"]))
- );
- assert_eq!(
- rm("blah"),
- Err(Err::Error(error_position!(
- &"blah"[..],
- ErrorKind::RegexpCapture
- )))
- );
- assert_eq!(
- rm("hello nom 0.3.11 world regex 0.1.41"),
- Ok((
- " world regex 0.1.41",
- vec!["nom 0.3.11", "nom", "0.3.11", "0", "3", "11"]
- ))
- );
- }
-
- #[cfg(feature = "alloc")]
- #[test]
- fn re_captures() {
- named!(rm< &str,Vec<Vec<&str>> >, re_captures!(r"([[:alpha:]]+)\s+((\d+).(\d+).(\d+))"));
- assert_eq!(
- rm("blah nom 0.3.11pouet"),
- Ok((
- "pouet",
- vec![vec!["nom 0.3.11", "nom", "0.3.11", "0", "3", "11"]]
- ))
- );
- assert_eq!(
- rm("blah"),
- Err(Err::Error(error_position!(
- &"blah"[..],
- ErrorKind::RegexpCapture
- )))
- );
- assert_eq!(
- rm("hello nom 0.3.11 world regex 0.1.41 aaa"),
- Ok((
- " aaa",
- vec![
- vec!["nom 0.3.11", "nom", "0.3.11", "0", "3", "11"],
- vec!["regex 0.1.41", "regex", "0.1.41", "0", "1", "41"],
- ]
- ))
- );
- }
-
- #[cfg(feature = "alloc")]
- #[cfg(feature = "regexp_macros")]
- #[test]
- fn re_captures_static() {
- named!(rm< &str,Vec<Vec<&str>> >, re_captures_static!(r"([[:alpha:]]+)\s+((\d+).(\d+).(\d+))"));
- assert_eq!(
- rm("blah nom 0.3.11pouet"),
- Ok((
- "pouet",
- vec![vec!["nom 0.3.11", "nom", "0.3.11", "0", "3", "11"]]
- ))
- );
- assert_eq!(
- rm("blah"),
- Err(Err::Error(error_position!(
- &"blah"[..],
- ErrorKind::RegexpCapture
- )))
- );
- assert_eq!(
- rm("hello nom 0.3.11 world regex 0.1.41 aaa"),
- Ok((
- " aaa",
- vec![
- vec!["nom 0.3.11", "nom", "0.3.11", "0", "3", "11"],
- vec!["regex 0.1.41", "regex", "0.1.41", "0", "1", "41"],
- ]
- ))
- );
- }
-
- #[test]
- fn re_bytes_match() {
- named!(rm, re_bytes_match!(r"^\d{4}-\d{2}-\d{2}"));
- assert_eq!(rm(&b"2015-09-07"[..]), Ok((&b""[..], &b"2015-09-07"[..])));
- assert_eq!(
- rm(&b"blah"[..]),
- Err(Err::Error(error_position!(
- &b"blah"[..],
- ErrorKind::RegexpMatch
- )))
- );
- assert_eq!(
- rm(&b"2015-09-07blah"[..]),
- Ok((&b""[..], &b"2015-09-07blah"[..]))
- );
- }
-
- #[cfg(feature = "regexp_macros")]
- #[test]
- fn re_bytes_match_static() {
- named!(rm, re_bytes_match_static!(r"^\d{4}-\d{2}-\d{2}"));
- assert_eq!(rm(&b"2015-09-07"[..]), Ok((&b""[..], &b"2015-09-07"[..])));
- assert_eq!(
- rm(&b"blah"[..]),
- Err(Err::Error(error_position!(
- &b"blah"[..],
- ErrorKind::RegexpMatch
- )))
- );
- assert_eq!(
- rm(&b"2015-09-07blah"[..]),
- Ok((&b""[..], &b"2015-09-07blah"[..]))
- );
- }
-
- #[test]
- fn re_bytes_find() {
- named!(rm, re_bytes_find!(r"^\d{4}-\d{2}-\d{2}"));
- assert_eq!(rm(&b"2015-09-07"[..]), Ok((&b""[..], &b"2015-09-07"[..])));
- assert_eq!(
- rm(&b"blah"[..]),
- Err(Err::Error(error_position!(
- &b"blah"[..],
- ErrorKind::RegexpFind
- )))
- );
- assert_eq!(
- rm(&b"2015-09-07blah"[..]),
- Ok((&b"blah"[..], &b"2015-09-07"[..]))
- );
- }
-
- #[cfg(feature = "regexp_macros")]
- #[test]
- fn re_bytes_find_static() {
- named!(rm, re_bytes_find_static!(r"^\d{4}-\d{2}-\d{2}"));
- assert_eq!(rm(&b"2015-09-07"[..]), Ok((&b""[..], &b"2015-09-07"[..])));
- assert_eq!(
- rm(&b"blah"[..]),
- Err(Err::Error(error_position!(
- &b"blah"[..],
- ErrorKind::RegexpFind
- )))
- );
- assert_eq!(
- rm(&b"2015-09-07blah"[..]),
- Ok((&b"blah"[..], &b"2015-09-07"[..]))
- );
- }
-
- #[cfg(feature = "alloc")]
- #[test]
- fn re_bytes_matches() {
- named!(rm<Vec<&[u8]>>, re_bytes_matches!(r"\d{4}-\d{2}-\d{2}"));
- assert_eq!(
- rm(&b"2015-09-07"[..]),
- Ok((&b""[..], vec![&b"2015-09-07"[..]]))
- );
- assert_eq!(
- rm(&b"blah"[..]),
- Err(Err::Error(error_position!(
- &b"blah"[..],
- ErrorKind::RegexpMatches
- )))
- );
- assert_eq!(
- rm(&b"aaa2015-09-07blah2015-09-09pouet"[..]),
- Ok((&b"pouet"[..], vec![&b"2015-09-07"[..], &b"2015-09-09"[..]]))
- );
- }
-
- #[cfg(feature = "alloc")]
- #[cfg(feature = "regexp_macros")]
- #[test]
- fn re_bytes_matches_static() {
- named!(
- rm<Vec<&[u8]>>,
- re_bytes_matches_static!(r"\d{4}-\d{2}-\d{2}")
- );
- assert_eq!(
- rm(&b"2015-09-07"[..]),
- Ok((&b""[..], vec![&b"2015-09-07"[..]]))
- );
- assert_eq!(
- rm(&b"blah"[..]),
- Err(Err::Error(error_position!(
- &b"blah"[..],
- ErrorKind::RegexpMatches
- )))
- );
- assert_eq!(
- rm(&b"aaa2015-09-07blah2015-09-09pouet"[..]),
- Ok((&b"pouet"[..], vec![&b"2015-09-07"[..], &b"2015-09-09"[..]]))
- );
- }
-
- #[cfg(feature = "alloc")]
- #[test]
- fn re_bytes_capture() {
- named!(
- rm<Vec<&[u8]>>,
- re_bytes_capture!(r"([[:alpha:]]+)\s+((\d+).(\d+).(\d+))")
- );
- assert_eq!(
- rm(&b"blah nom 0.3.11pouet"[..]),
- Ok((
- &b"pouet"[..],
- vec![
- &b"nom 0.3.11"[..],
- &b"nom"[..],
- &b"0.3.11"[..],
- &b"0"[..],
- &b"3"[..],
- &b"11"[..],
- ]
- ))
- );
- assert_eq!(
- rm(&b"blah"[..]),
- Err(Err::Error(error_position!(
- &b"blah"[..],
- ErrorKind::RegexpCapture
- )))
- );
- assert_eq!(
- rm(&b"hello nom 0.3.11 world regex 0.1.41"[..]),
- Ok((
- &b" world regex 0.1.41"[..],
- vec![
- &b"nom 0.3.11"[..],
- &b"nom"[..],
- &b"0.3.11"[..],
- &b"0"[..],
- &b"3"[..],
- &b"11"[..],
- ]
- ))
- );
- }
-
- #[cfg(feature = "alloc")]
- #[cfg(feature = "regexp_macros")]
- #[test]
- fn re_bytes_capture_static() {
- named!(
- rm<Vec<&[u8]>>,
- re_bytes_capture_static!(r"([[:alpha:]]+)\s+((\d+).(\d+).(\d+))")
- );
- assert_eq!(
- rm(&b"blah nom 0.3.11pouet"[..]),
- Ok((
- &b"pouet"[..],
- vec![
- &b"nom 0.3.11"[..],
- &b"nom"[..],
- &b"0.3.11"[..],
- &b"0"[..],
- &b"3"[..],
- &b"11"[..],
- ]
- ))
- );
- assert_eq!(
- rm(&b"blah"[..]),
- Err(Err::Error(error_position!(
- &b"blah"[..],
- ErrorKind::RegexpCapture
- )))
- );
- assert_eq!(
- rm(&b"hello nom 0.3.11 world regex 0.1.41"[..]),
- Ok((
- &b" world regex 0.1.41"[..],
- vec![
- &b"nom 0.3.11"[..],
- &b"nom"[..],
- &b"0.3.11"[..],
- &b"0"[..],
- &b"3"[..],
- &b"11"[..],
- ]
- ))
- );
- }
-
- #[cfg(feature = "alloc")]
- #[test]
- fn re_bytes_captures() {
- named!(
- rm<Vec<Vec<&[u8]>>>,
- re_bytes_captures!(r"([[:alpha:]]+)\s+((\d+).(\d+).(\d+))")
- );
- assert_eq!(
- rm(&b"blah nom 0.3.11pouet"[..]),
- Ok((
- &b"pouet"[..],
- vec![
- vec![
- &b"nom 0.3.11"[..],
- &b"nom"[..],
- &b"0.3.11"[..],
- &b"0"[..],
- &b"3"[..],
- &b"11"[..],
- ],
- ]
- ))
- );
- assert_eq!(
- rm(&b"blah"[..]),
- Err(Err::Error(error_position!(
- &b"blah"[..],
- ErrorKind::RegexpCapture
- )))
- );
- assert_eq!(
- rm(&b"hello nom 0.3.11 world regex 0.1.41 aaa"[..]),
- Ok((
- &b" aaa"[..],
- vec![
- vec![
- &b"nom 0.3.11"[..],
- &b"nom"[..],
- &b"0.3.11"[..],
- &b"0"[..],
- &b"3"[..],
- &b"11"[..],
- ],
- vec![
- &b"regex 0.1.41"[..],
- &b"regex"[..],
- &b"0.1.41"[..],
- &b"0"[..],
- &b"1"[..],
- &b"41"[..],
- ],
- ]
- ))
- );
- }
-
- #[cfg(feature = "alloc")]
- #[cfg(feature = "regexp_macros")]
- #[test]
- fn re_bytes_captures_static() {
- named!(
- rm<Vec<Vec<&[u8]>>>,
- re_bytes_captures_static!(r"([[:alpha:]]+)\s+((\d+).(\d+).(\d+))")
- );
- assert_eq!(
- rm(&b"blah nom 0.3.11pouet"[..]),
- Ok((
- &b"pouet"[..],
- vec![
- vec![
- &b"nom 0.3.11"[..],
- &b"nom"[..],
- &b"0.3.11"[..],
- &b"0"[..],
- &b"3"[..],
- &b"11"[..],
- ],
- ]
- ))
- );
- assert_eq!(
- rm(&b"blah"[..]),
- Err(Err::Error(error_position!(
- &b"blah"[..],
- ErrorKind::RegexpCapture
- )))
- );
- assert_eq!(
- rm(&b"hello nom 0.3.11 world regex 0.1.41 aaa"[..]),
- Ok((
- &b" aaa"[..],
- vec![
- vec![
- &b"nom 0.3.11"[..],
- &b"nom"[..],
- &b"0.3.11"[..],
- &b"0"[..],
- &b"3"[..],
- &b"11"[..],
- ],
- vec![
- &b"regex 0.1.41"[..],
- &b"regex"[..],
- &b"0.1.41"[..],
- &b"0"[..],
- &b"1"[..],
- &b"41"[..],
- ],
- ]
- ))
- );
- }
-}