diff options
| author | John Turner <jturner.usa@gmail.com> | 2025-11-13 23:21:46 +0000 |
|---|---|---|
| committer | John Turner <jturner.usa@gmail.com> | 2025-11-13 23:21:46 +0000 |
| commit | 50ab68c9c51dc14989ad5ee3d11442c8e452ebff (patch) | |
| tree | 04e01cb0782d7caad0d648b238056dbd2b87f8e0 /src | |
| parent | 58b4592b7b4e3a9ba8c39d2654342e0a34df487f (diff) | |
| download | gentoo-utils-50ab68c9c51dc14989ad5ee3d11442c8e452ebff.tar.gz | |
use new mon parsers
Diffstat (limited to 'src')
| -rw-r--r-- | src/atom/parsers.rs | 30 | ||||
| -rw-r--r-- | src/ebuild/parsers.rs | 15 | ||||
| -rw-r--r-- | src/useflag/parsers.rs | 8 |
3 files changed, 23 insertions, 30 deletions
diff --git a/src/atom/parsers.rs b/src/atom/parsers.rs index 37e18a7..d3eaf7a 100644 --- a/src/atom/parsers.rs +++ b/src/atom/parsers.rs @@ -1,6 +1,6 @@ use core::option::Option::None; -use mon::{Parser, ParserIter, r#if, numeric1, one_of, tag}; +use mon::{Parser, ParserIter, alphanumeric, r#if, numeric1, one_of, tag}; use crate::{ Parseable, @@ -115,10 +115,8 @@ impl<'a> Parseable<'a, &'a str> for Category { type Parser = impl Parser<&'a str, Output = Self>; fn parser() -> Self::Parser { - let start = r#if(|c: &char| c.is_ascii_alphanumeric() || *c == '_'); - let rest = r#if(|c: &char| c.is_ascii_alphanumeric() || "+_.-".contains(*c)) - .repeated() - .many(); + let start = alphanumeric().or(one_of("_".chars())); + let rest = alphanumeric().or(one_of("+_.-".chars())).repeated().many(); start .and(rest) @@ -131,13 +129,15 @@ impl<'a> Parseable<'a, &'a str> for Name { type Parser = impl Parser<&'a str, Output = Self>; fn parser() -> Self::Parser { - let start = r#if(|c: &char| c.is_ascii_alphanumeric() || *c == '_'); - let rest = r#if(|c: &char| c.is_ascii_alphanumeric() || "_+".contains(*c)) - .or( - one_of("-".chars()).and_not(Version::parser().preceded_by(tag("-")).followed_by( - r#if(|c: &char| c.is_ascii_alphanumeric() || "_+-".contains(*c)).not(), - )), - ) + let start = alphanumeric().or(one_of("_".chars())); + + let rest = alphanumeric() + .or(one_of("_+".chars())) + .or(one_of("-".chars()).and_not( + Version::parser() + .preceded_by(tag("-")) + .followed_by(alphanumeric().or(one_of("_+-".chars())).not()), + )) .repeated() .many(); @@ -162,10 +162,8 @@ impl<'a> Parseable<'a, &'a str> for SlotName { type Parser = impl Parser<&'a str, Output = Self>; fn parser() -> Self::Parser { - let start = r#if(|c: &char| c.is_ascii_alphanumeric() || *c == '_'); - let rest = r#if(|c: &char| c.is_ascii_alphanumeric() || "+_.-".contains(*c)) - .repeated() - .many(); + let start = alphanumeric().or(one_of("_".chars())); + let rest = alphanumeric().or(one_of("+_.-".chars())).repeated().many(); start .and(rest) diff --git a/src/ebuild/parsers.rs b/src/ebuild/parsers.rs index f685df3..8ab2978 100644 --- a/src/ebuild/parsers.rs +++ b/src/ebuild/parsers.rs @@ -1,6 +1,6 @@ use std::path::PathBuf; -use mon::{Parser, ParserIter, alpha1, r#if, tag, whitespace1}; +use mon::{Parser, ParserIter, alpha1, alphanumeric, r#if, one_of, tag, whitespace1}; use crate::{ Parseable, @@ -48,6 +48,7 @@ impl<'a> Parseable<'a, &'a str> for SrcUri { .recognize() .map(|output: &str| PathBuf::from(output)) }; + let uri = UriPrefix::parser() .opt() .and(Uri::parser()) @@ -66,10 +67,8 @@ impl<'a> Parseable<'a, &'a str> for License { type Parser = impl Parser<&'a str, Output = Self>; fn parser() -> Self::Parser { - let start = r#if(|c: &char| c.is_ascii_alphanumeric() || "_".contains(*c)); - let rest = r#if(|c: &char| c.is_ascii_alphanumeric() || "+_.-".contains(*c)) - .repeated() - .many(); + let start = alphanumeric().or(one_of("_".chars())); + let rest = alphanumeric().or(one_of("+_.-".chars())).repeated().many(); start .and(rest) @@ -82,10 +81,8 @@ impl<'a> Parseable<'a, &'a str> for Eapi { type Parser = impl Parser<&'a str, Output = Self>; fn parser() -> Self::Parser { - let start = r#if(|c: &char| c.is_ascii_alphanumeric() || "_".contains(*c)); - let rest = r#if(|c: &char| c.is_ascii_alphanumeric() || "+_.-".contains(*c)) - .repeated() - .many(); + let start = alphanumeric().or(one_of("_".chars())); + let rest = alphanumeric().or(one_of("+_.-".chars())).repeated().many(); start .and(rest) diff --git a/src/useflag/parsers.rs b/src/useflag/parsers.rs index d9aaf21..fc371a6 100644 --- a/src/useflag/parsers.rs +++ b/src/useflag/parsers.rs @@ -1,4 +1,4 @@ -use mon::{Parser, ParserIter, r#if, tag}; +use mon::{Parser, ParserIter, alphanumeric, one_of, tag}; use crate::{ Parseable, @@ -9,10 +9,8 @@ impl<'a> Parseable<'a, &'a str> for UseFlag { type Parser = impl Parser<&'a str, Output = Self>; fn parser() -> Self::Parser { - let start = r#if(|c: &char| c.is_ascii_alphanumeric()); - let rest = r#if(|c: &char| c.is_ascii_alphanumeric() || "+_@-".contains(*c)) - .repeated() - .many(); + let start = alphanumeric(); + let rest = alphanumeric().or(one_of("+_@-".chars())).repeated().many(); start .and(rest) |
