diff options
| author | John Turner <jturner.usa@gmail.com> | 2025-10-27 21:58:35 -0400 |
|---|---|---|
| committer | John Turner <jturner.usa@gmail.com> | 2025-10-27 21:58:35 -0400 |
| commit | 847e5fc019f4b806c49a60d930e9d6ee352b6d5e (patch) | |
| tree | af584d258aaad5c5ad3c855667166192414faa29 /src/useflag/parsers.rs | |
| parent | 4789790733c8dcf22febca93bb17847e09d76bdc (diff) | |
| download | gentoo-utils-847e5fc019f4b806c49a60d930e9d6ee352b6d5e.tar.gz | |
impl IUseFlag type
Diffstat (limited to 'src/useflag/parsers.rs')
| -rw-r--r-- | src/useflag/parsers.rs | 17 |
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, + })) +} |
