summaryrefslogtreecommitdiff
path: root/src/useflag
diff options
context:
space:
mode:
authorJohn Turner <jturner.usa@gmail.com>2025-10-23 00:52:35 -0400
committerJohn Turner <jturner.usa@gmail.com>2025-10-23 21:19:47 -0400
commit2e7d8cfbb92361b6c35f8f9a567c0517139cfb51 (patch)
treee6ce91d8b138f597db408e18318bd768d3e92cc3 /src/useflag
parent6e4b45027e993f805346809f22d7a209bb477d2f (diff)
downloadgentoo-utils-2e7d8cfbb92361b6c35f8f9a567c0517139cfb51.tar.gz
impl atom parsing
Diffstat (limited to 'src/useflag')
-rw-r--r--src/useflag/mod.rs10
-rw-r--r--src/useflag/parsers.rs10
2 files changed, 20 insertions, 0 deletions
diff --git a/src/useflag/mod.rs b/src/useflag/mod.rs
new file mode 100644
index 0000000..3bf929a
--- /dev/null
+++ b/src/useflag/mod.rs
@@ -0,0 +1,10 @@
+pub mod parsers;
+
+#[derive(Clone, Debug, PartialEq, Eq)]
+pub struct UseFlag(String);
+
+impl UseFlag {
+ pub fn get(&self) -> &str {
+ self.0.as_str()
+ }
+}
diff --git a/src/useflag/parsers.rs b/src/useflag/parsers.rs
new file mode 100644
index 0000000..e6e228b
--- /dev/null
+++ b/src/useflag/parsers.rs
@@ -0,0 +1,10 @@
+use mon::{Parser, alpha1, alphanumeric, one_of, take_while};
+
+use crate::useflag::UseFlag;
+
+pub fn useflag<'a>() -> impl Parser<&'a str, Output = UseFlag> {
+ alpha1()
+ .and(alphanumeric().or(take_while(one_of("+_@-".chars()))))
+ .recognize()
+ .map(|output: &str| UseFlag(output.to_string()))
+}