update mon and use new ascii parsers

This commit is contained in:
2025-11-20 23:27:41 +00:00
parent ff7d9b312f
commit 699d4bafd0
6 changed files with 58 additions and 35 deletions

View File

@@ -1,6 +1,9 @@
use core::option::Option::None;
use mon::{Parser, ParserIter, alphanumeric, eof, r#if, input::InputIter, numeric1, one_of, tag};
use mon::{
Parser, ParserIter, ascii_alphanumeric, ascii_numeric1, eof, r#if, input::InputIter, one_of,
tag,
};
use crate::{
Parseable,
@@ -40,7 +43,7 @@ impl<'a> Parseable<'a, &'a str> for VersionNumber {
type Parser = impl Parser<&'a str, Output = Self>;
fn parser() -> Self::Parser {
numeric1().map(|output: &str| VersionNumber(output.to_string()))
ascii_numeric1().map(|output: &str| VersionNumber(output.to_string()))
}
}
@@ -115,8 +118,11 @@ impl<'a> Parseable<'a, &'a str> for Category {
type Parser = impl Parser<&'a str, Output = Self>;
fn parser() -> Self::Parser {
let start = alphanumeric().or(one_of("_".chars()));
let rest = alphanumeric().or(one_of("+_.-".chars())).repeated().many();
let start = ascii_alphanumeric().or(one_of("_".chars()));
let rest = ascii_alphanumeric()
.or(one_of("+_.-".chars()))
.repeated()
.many();
start
.and(rest)
@@ -129,19 +135,19 @@ impl<'a> Parseable<'a, &'a str> for Name {
type Parser = impl Parser<&'a str, Output = Self>;
fn parser() -> Self::Parser {
let start = || alphanumeric().or(one_of("_".chars()));
let start = || ascii_alphanumeric().or(one_of("_".chars()));
let rest = alphanumeric()
let rest = ascii_alphanumeric()
.or(one_of("_+".chars()))
.or(one_of("-".chars()).and_not(
Version::parser()
.preceded_by(tag("-"))
.followed_by(alphanumeric().or(one_of("_+-".chars())).not()),
.followed_by(ascii_alphanumeric().or(one_of("_+-".chars())).not()),
))
.repeated()
.many();
let verify = alphanumeric()
let verify = ascii_alphanumeric()
.or(one_of("_+".chars()))
.or(one_of("-".chars())
.and_not(Version::parser().preceded_by(tag("-")).followed_by(eof())))
@@ -172,8 +178,11 @@ impl<'a> Parseable<'a, &'a str> for SlotName {
type Parser = impl Parser<&'a str, Output = Self>;
fn parser() -> Self::Parser {
let start = alphanumeric().or(one_of("_".chars()));
let rest = alphanumeric().or(one_of("+_.-".chars())).repeated().many();
let start = ascii_alphanumeric().or(one_of("_".chars()));
let rest = ascii_alphanumeric()
.or(one_of("+_.-".chars()))
.repeated()
.many();
start
.and(rest)
@@ -215,8 +224,11 @@ impl<'a> Parseable<'a, &'a str> for Repo {
type Parser = impl Parser<&'a str, Output = Self>;
fn parser() -> Self::Parser {
let start = alphanumeric().or(one_of("_".chars()));
let rest = alphanumeric().or(one_of("+_-".chars())).repeated().many();
let start = ascii_alphanumeric().or(one_of("_".chars()));
let rest = ascii_alphanumeric()
.or(one_of("+_-".chars()))
.repeated()
.many();
start
.and(rest)