diff options
| author | John Turner <jturner.usa@gmail.com> | 2025-10-24 21:36:06 -0400 |
|---|---|---|
| committer | John Turner <jturner.usa@gmail.com> | 2025-10-24 21:36:06 -0400 |
| commit | aa0d4edc57a9ac74a79f6f567e17ce583abb84de (patch) | |
| tree | 11a7cc83baf6ae48fd2c33e2fd1a13662e3516db | |
| parent | d75266f9677121d2d92065204aaae400fecd3e2b (diff) | |
| download | gentoo-utils-aa0d4edc57a9ac74a79f6f567e17ce583abb84de.tar.gz | |
fix useflag parser
| -rw-r--r-- | src/atom/parsers.rs | 7 | ||||
| -rw-r--r-- | src/useflag/parsers.rs | 11 |
2 files changed, 15 insertions, 3 deletions
diff --git a/src/atom/parsers.rs b/src/atom/parsers.rs index 65cce04..f4686f2 100644 --- a/src/atom/parsers.rs +++ b/src/atom/parsers.rs @@ -280,4 +280,11 @@ mod test { atom().check_finished(it).unwrap(); } + + #[test] + fn test_usedep_with_underscore() { + let it = InputIter::new("foo/bar-1.0.0[use_dep]"); + + atom().check_finished(it).unwrap(); + } } diff --git a/src/useflag/parsers.rs b/src/useflag/parsers.rs index e6e228b..a430b3d 100644 --- a/src/useflag/parsers.rs +++ b/src/useflag/parsers.rs @@ -1,10 +1,15 @@ -use mon::{Parser, alpha1, alphanumeric, one_of, take_while}; +use mon::{Parser, r#if, take_while}; use crate::useflag::UseFlag; pub fn useflag<'a>() -> impl Parser<&'a str, Output = UseFlag> { - alpha1() - .and(alphanumeric().or(take_while(one_of("+_@-".chars())))) + let start = r#if(|c: &char| c.is_ascii_alphanumeric()); + let rest = take_while(r#if(|c: &char| { + c.is_ascii_alphanumeric() || "+_@-".contains(*c) + })); + + start + .and(rest) .recognize() .map(|output: &str| UseFlag(output.to_string())) } |
