summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJohn Turner <jturner.usa@gmail.com>2025-11-13 23:21:46 +0000
committerJohn Turner <jturner.usa@gmail.com>2025-11-13 23:21:46 +0000
commit50ab68c9c51dc14989ad5ee3d11442c8e452ebff (patch)
tree04e01cb0782d7caad0d648b238056dbd2b87f8e0 /src
parent58b4592b7b4e3a9ba8c39d2654342e0a34df487f (diff)
downloadgentoo-utils-50ab68c9c51dc14989ad5ee3d11442c8e452ebff.tar.gz
use new mon parsers
Diffstat (limited to 'src')
-rw-r--r--src/atom/parsers.rs30
-rw-r--r--src/ebuild/parsers.rs15
-rw-r--r--src/useflag/parsers.rs8
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)