summaryrefslogtreecommitdiff
path: root/src/repo/parsers.rs
diff options
context:
space:
mode:
authorJohn Turner <jturner.usa@gmail.com>2025-12-13 05:36:26 +0000
committerJohn Turner <jturner.usa@gmail.com>2025-12-14 01:37:49 +0000
commita4e73069f42f1ace341007de6a54ac7148a4181a (patch)
tree0760a915be8f2639dffc2cdd10408ad7e3460a5b /src/repo/parsers.rs
parent870800c98504f48dd74c97bd2d03209fe3eea99f (diff)
downloadgentoo-utils-feature/profiles.tar.gz
read arch.listfeature/profiles
Diffstat (limited to 'src/repo/parsers.rs')
-rw-r--r--src/repo/parsers.rs20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/repo/parsers.rs b/src/repo/parsers.rs
new file mode 100644
index 0000000..ccef666
--- /dev/null
+++ b/src/repo/parsers.rs
@@ -0,0 +1,20 @@
+use mon::{Parser, ParserIter, ascii_alphanumeric, one_of};
+
+use crate::{Parseable, repo::Arch};
+
+impl<'a> Parseable<'a, &'a str> for Arch {
+ type Parser = impl Parser<&'a str, Output = Self>;
+
+ fn parser() -> Self::Parser {
+ let start = ascii_alphanumeric();
+ let rest = ascii_alphanumeric()
+ .or(one_of("-".chars()))
+ .repeated()
+ .many();
+
+ start
+ .and(rest)
+ .recognize()
+ .map(|output: &str| Arch(output.to_string()))
+ }
+}