From 847e5fc019f4b806c49a60d930e9d6ee352b6d5e Mon Sep 17 00:00:00 2001 From: John Turner Date: Mon, 27 Oct 2025 21:58:35 -0400 Subject: impl IUseFlag type --- src/useflag/parsers.rs | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) (limited to 'src/useflag/parsers.rs') 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, + })) +} -- cgit v1.2.3