update to new version of mon

This commit is contained in:
John Turner
2025-10-30 22:40:29 +00:00
parent 72b6774e2b
commit 820cb3ba48
6 changed files with 24 additions and 24 deletions

View File

@@ -4,7 +4,7 @@ version = "0.1.0"
edition = "2024" edition = "2024"
[dependencies] [dependencies]
mon = { git = "https://jturnerusa.dev/cgit/mon/", rev = "1a4d671f51cc062f506a0cc9fa2563503eb93880" } mon = { git = "https://jturnerusa.dev/cgit/mon/", rev = "821f132bd5c8678327c2ab8764bd7d172a7b7ee4" }
get = { git = "https://jturnerusa.dev/cgit/get/", rev = "cd5f75b65777a855ab010c3137304ac05f2e56b8" } get = { git = "https://jturnerusa.dev/cgit/get/", rev = "cd5f75b65777a855ab010c3137304ac05f2e56b8" }
itertools = "0.14.0" itertools = "0.14.0"
thiserror = "2.0.17" thiserror = "2.0.17"

View File

@@ -74,8 +74,8 @@ impl<'a> Parseable<'a, &'a str> for Version {
type Parser = impl Parser<&'a str, Output = Self>; type Parser = impl Parser<&'a str, Output = Self>;
fn parser() -> Self::Parser { fn parser() -> Self::Parser {
let numbers = VersionNumber::parser().separated_list(tag("."), 1..); let numbers = VersionNumber::parser().separated_by(tag("."), 1..);
let suffixes = VersionSuffix::parser().separated_list(tag("_"), 0..); let suffixes = VersionSuffix::parser().separated_by(tag("_"), 0..);
let rev = VersionNumber::parser().preceded_by(tag("-r")); let rev = VersionNumber::parser().preceded_by(tag("-r"));
numbers numbers
@@ -96,7 +96,7 @@ impl<'a> Parseable<'a, &'a str> for Category {
fn parser() -> Self::Parser { fn parser() -> Self::Parser {
let start = r#if(|c: &char| c.is_ascii_alphanumeric() || *c == '_'); let start = r#if(|c: &char| c.is_ascii_alphanumeric() || *c == '_');
let rest = r#if(|c: &char| c.is_ascii_alphanumeric() || "+_.-".contains(*c)).list(0..); let rest = r#if(|c: &char| c.is_ascii_alphanumeric() || "+_.-".contains(*c)).repeated(0..);
start start
.and(rest) .and(rest)
@@ -116,7 +116,7 @@ impl<'a> Parseable<'a, &'a str> for Name {
r#if(|c: &char| c.is_ascii_alphanumeric() || "_+-".contains(*c)).not(), r#if(|c: &char| c.is_ascii_alphanumeric() || "_+-".contains(*c)).not(),
)), )),
) )
.list(0..); .repeated(0..);
start start
.and(rest) .and(rest)
@@ -140,7 +140,7 @@ impl<'a> Parseable<'a, &'a str> for SlotName {
fn parser() -> Self::Parser { fn parser() -> Self::Parser {
let start = r#if(|c: &char| c.is_ascii_alphanumeric() || *c == '_'); let start = r#if(|c: &char| c.is_ascii_alphanumeric() || *c == '_');
let rest = r#if(|c: &char| c.is_ascii_alphanumeric() || "+_.-".contains(*c)).list(0..); let rest = r#if(|c: &char| c.is_ascii_alphanumeric() || "+_.-".contains(*c)).repeated(0..);
start start
.and(rest) .and(rest)
@@ -257,7 +257,7 @@ impl<'a> Parseable<'a, &'a str> for Atom {
.and(Slot::parser().preceded_by(tag(":")).opt()) .and(Slot::parser().preceded_by(tag(":")).opt())
.and( .and(
UseDep::parser() UseDep::parser()
.separated_list(tag(","), 0..) .separated_by(tag(","), 0..)
.delimited_by(tag("["), tag("]")) .delimited_by(tag("["), tag("]"))
.opt(), .opt(),
) )

View File

@@ -26,7 +26,7 @@ impl<'a> Parseable<'a, &'a str> for Uri {
.followed_by(tag("://")) .followed_by(tag("://"))
.map(|output: &str| output.to_string()); .map(|output: &str| output.to_string());
let path = r#if(|c: &char| !c.is_ascii_whitespace()) let path = r#if(|c: &char| !c.is_ascii_whitespace())
.list(1..) .repeated(1..)
.recognize() .recognize()
.map(|output: &str| output.to_string()); .map(|output: &str| output.to_string());
@@ -42,7 +42,7 @@ impl<'a> Parseable<'a, &'a str> for SrcUri {
fn parser() -> Self::Parser { fn parser() -> Self::Parser {
let filename = || { let filename = || {
r#if(|c: &char| !c.is_ascii_whitespace()) r#if(|c: &char| !c.is_ascii_whitespace())
.list(1..) .repeated(1..)
.recognize() .recognize()
.map(|output: &str| PathBuf::from(output)) .map(|output: &str| PathBuf::from(output))
}; };
@@ -65,7 +65,7 @@ impl<'a> Parseable<'a, &'a str> for License {
fn parser() -> Self::Parser { fn parser() -> Self::Parser {
let start = r#if(|c: &char| c.is_ascii_alphanumeric() || "_".contains(*c)); let start = r#if(|c: &char| c.is_ascii_alphanumeric() || "_".contains(*c));
let rest = r#if(|c: &char| c.is_ascii_alphanumeric() || "+_.-".contains(*c)).list(0..); let rest = r#if(|c: &char| c.is_ascii_alphanumeric() || "+_.-".contains(*c)).repeated(0..);
start start
.and(rest) .and(rest)
@@ -79,7 +79,7 @@ impl<'a> Parseable<'a, &'a str> for Eapi {
fn parser() -> Self::Parser { fn parser() -> Self::Parser {
let start = r#if(|c: &char| c.is_ascii_alphanumeric() || "_".contains(*c)); let start = r#if(|c: &char| c.is_ascii_alphanumeric() || "_".contains(*c));
let rest = r#if(|c: &char| c.is_ascii_alphanumeric() || "+_.-".contains(*c)).list(0..); let rest = r#if(|c: &char| c.is_ascii_alphanumeric() || "+_.-".contains(*c)).repeated(0..);
start start
.and(rest) .and(rest)
@@ -96,7 +96,7 @@ impl<'a> Parseable<'a, &'a str> for Eclass {
fn parser() -> Self::Parser { fn parser() -> Self::Parser {
r#if(|c: &char| !c.is_ascii_whitespace()) r#if(|c: &char| !c.is_ascii_whitespace())
.list(1..) .repeated(1..)
.recognize() .recognize()
.map(|output: &str| Eclass(output.to_string())) .map(|output: &str| Eclass(output.to_string()))
} }
@@ -111,18 +111,18 @@ where
fn parser() -> Self::Parser { fn parser() -> Self::Parser {
|it| { |it| {
let all_of_group = Depend::parser() let all_of_group = Depend::parser()
.separated_list(whitespace1(), 1..) .separated_by(whitespace1(), 1..)
.delimited_by(tag("(").followed_by(whitespace1()), tag(")")) .delimited_by(tag("(").followed_by(whitespace1()), tag(")"))
.map(|exprs| Depend::AllOf(exprs)); .map(|exprs| Depend::AllOf(exprs));
let any_of_group = Depend::parser() let any_of_group = Depend::parser()
.separated_list(whitespace1(), 1..) .separated_by(whitespace1(), 1..)
.delimited_by(tag("(").followed_by(whitespace1()), tag(")")) .delimited_by(tag("(").followed_by(whitespace1()), tag(")"))
.preceded_by(tag("||").followed_by(whitespace1())) .preceded_by(tag("||").followed_by(whitespace1()))
.map(|exprs| Depend::AnyOf(exprs)); .map(|exprs| Depend::AnyOf(exprs));
let one_of_group = Depend::parser() let one_of_group = Depend::parser()
.separated_list(whitespace1(), 1..) .separated_by(whitespace1(), 1..)
.delimited_by(tag("(").followed_by(whitespace1()), tag(")")) .delimited_by(tag("(").followed_by(whitespace1()), tag(")"))
.preceded_by(tag("^^").followed_by(whitespace1())) .preceded_by(tag("^^").followed_by(whitespace1()))
.map(|exprs| Depend::OneOf(exprs)); .map(|exprs| Depend::OneOf(exprs));
@@ -131,7 +131,7 @@ where
.followed_by(whitespace1()) .followed_by(whitespace1())
.and( .and(
Depend::parser() Depend::parser()
.separated_list(whitespace1(), 1..) .separated_by(whitespace1(), 1..)
.delimited_by(tag("(").followed_by(whitespace1()), tag(")")), .delimited_by(tag("(").followed_by(whitespace1()), tag(")")),
) )
.map(|(conditional, exprs)| Depend::ConditionalGroup(conditional, exprs)); .map(|(conditional, exprs)| Depend::ConditionalGroup(conditional, exprs));
@@ -189,7 +189,7 @@ mod test {
let it = InputIter::new("flag? ( || ( foo/bar foo/bar ) )"); let it = InputIter::new("flag? ( || ( foo/bar foo/bar ) )");
Depend::<Atom>::parser() Depend::<Atom>::parser()
.separated_list(whitespace1(), 0..) .separated_by(whitespace1(), 0..)
.check_finished(it) .check_finished(it)
.unwrap(); .unwrap();
} }

View File

@@ -200,7 +200,7 @@ fn read_src_uri(input: &str) -> Option<Result<Vec<Depend<SrcUri>>, Error>> {
.find_map(|line| line.strip_prefix("SRC_URI="))?; .find_map(|line| line.strip_prefix("SRC_URI="))?;
match Depend::<SrcUri>::parser() match Depend::<SrcUri>::parser()
.separated_list(whitespace1(), 0..) .separated_by(whitespace1(), 0..)
.parse_finished(InputIter::new(line)) .parse_finished(InputIter::new(line))
{ {
Ok(slot) => Some(Ok(slot)), Ok(slot) => Some(Ok(slot)),
@@ -223,7 +223,7 @@ fn read_inherit(input: &str) -> Option<Result<Vec<Eclass>, Error>> {
.find_map(|line| line.strip_prefix("INHERIT="))?; .find_map(|line| line.strip_prefix("INHERIT="))?;
match Eclass::parser() match Eclass::parser()
.separated_list(whitespace1(), 0..) .separated_by(whitespace1(), 0..)
.parse_finished(InputIter::new(line)) .parse_finished(InputIter::new(line))
{ {
Ok(inherit) => Some(Ok(inherit)), Ok(inherit) => Some(Ok(inherit)),
@@ -235,7 +235,7 @@ fn read_iuse(input: &str) -> Option<Result<Vec<IUseFlag>, Error>> {
let line = input.lines().find_map(|line| line.strip_prefix("IUSE="))?; let line = input.lines().find_map(|line| line.strip_prefix("IUSE="))?;
match IUseFlag::parser() match IUseFlag::parser()
.separated_list(whitespace1(), 0..) .separated_by(whitespace1(), 0..)
.parse_finished(InputIter::new(line)) .parse_finished(InputIter::new(line))
{ {
Ok(iuse) => Some(Ok(iuse)), Ok(iuse) => Some(Ok(iuse)),
@@ -249,7 +249,7 @@ fn read_license(input: &str) -> Option<Result<Vec<Depend<License>>, Error>> {
.find_map(|line| line.strip_suffix("LICENSE="))?; .find_map(|line| line.strip_suffix("LICENSE="))?;
match Depend::<License>::parser() match Depend::<License>::parser()
.separated_list(whitespace1(), 0..) .separated_by(whitespace1(), 0..)
.parse_finished(InputIter::new(line)) .parse_finished(InputIter::new(line))
{ {
Ok(license) => Some(Ok(license)), Ok(license) => Some(Ok(license)),
@@ -297,7 +297,7 @@ fn read_idepend(input: &str) -> Option<Result<Vec<Depend<Atom>>, Error>> {
fn parse_depends(line: &str) -> Result<Vec<Depend<Atom>>, Error> { fn parse_depends(line: &str) -> Result<Vec<Depend<Atom>>, Error> {
Depend::<Atom>::parser() Depend::<Atom>::parser()
.separated_list(whitespace1(), 0..) .separated_by(whitespace1(), 0..)
.parse_finished(InputIter::new(line)) .parse_finished(InputIter::new(line))
.map_err(|_| Error::Parser(line.to_string())) .map_err(|_| Error::Parser(line.to_string()))
} }

View File

@@ -10,7 +10,7 @@ impl<'a> Parseable<'a, &'a str> for UseFlag {
fn parser() -> Self::Parser { fn parser() -> Self::Parser {
let start = r#if(|c: &char| c.is_ascii_alphanumeric()); let start = r#if(|c: &char| c.is_ascii_alphanumeric());
let rest = r#if(|c: &char| c.is_ascii_alphanumeric() || "+_@-".contains(*c)).list(0..); let rest = r#if(|c: &char| c.is_ascii_alphanumeric() || "+_@-".contains(*c)).repeated(0..);
start start
.and(rest) .and(rest)

View File

@@ -15,7 +15,7 @@ fn parse_md5_cache() {
eprintln!("{line}"); eprintln!("{line}");
eprintln!(); eprintln!();
Depend::<Atom>::parser() Depend::<Atom>::parser()
.separated_list(whitespace1(), 0..) .separated_by(whitespace1(), 0..)
.ignore() .ignore()
.or(eof()) .or(eof())
.preceded_by(tag("DEPEND=")) .preceded_by(tag("DEPEND="))