summaryrefslogtreecommitdiff
path: root/src/useflag/parsers.rs
diff options
context:
space:
mode:
authorJohn Turner <jturner.usa@gmail.com>2025-10-27 21:58:35 -0400
committerJohn Turner <jturner.usa@gmail.com>2025-10-27 21:58:35 -0400
commit847e5fc019f4b806c49a60d930e9d6ee352b6d5e (patch)
treeaf584d258aaad5c5ad3c855667166192414faa29 /src/useflag/parsers.rs
parent4789790733c8dcf22febca93bb17847e09d76bdc (diff)
downloadgentoo-utils-847e5fc019f4b806c49a60d930e9d6ee352b6d5e.tar.gz
impl IUseFlag type
Diffstat (limited to 'src/useflag/parsers.rs')
-rw-r--r--src/useflag/parsers.rs17
1 files changed, 15 insertions, 2 deletions
diff --git a/src/useflag/parsers.rs b/src/useflag/parsers.rs
index e7b73d1..49000d9 100644
--- a/src/useflag/parsers.rs
+++ b/src/useflag/parsers.rs
@@ -1,6 +1,6 @@
-use mon::{Parser, r#if};
+use mon::{Parser, r#if, tag};
-use crate::useflag::UseFlag;
+use crate::useflag::{IUseFlag, UseFlag};
pub fn useflag<'a>() -> impl Parser<&'a str, Output = UseFlag> {
let start = r#if(|c: &char| c.is_ascii_alphanumeric());
@@ -11,3 +11,16 @@ pub fn useflag<'a>() -> impl Parser<&'a str, Output = UseFlag> {
.recognize()
.map(|output: &str| UseFlag(output.to_string()))
}
+
+pub fn iuseflag<'a>() -> impl Parser<&'a str, Output = IUseFlag> {
+ useflag()
+ .preceded_by(tag("+"))
+ .map(|flag| IUseFlag {
+ default: true,
+ flag,
+ })
+ .or(useflag().map(|flag| IUseFlag {
+ default: false,
+ flag,
+ }))
+}