forked from gentoo-utils/gentoo-utils
impl IUseFlag type
This commit is contained in:
@@ -1,10 +1,18 @@
|
||||
use core::fmt;
|
||||
|
||||
use get::Get;
|
||||
|
||||
pub mod parsers;
|
||||
|
||||
#[derive(Clone, Debug, PartialEq, Eq)]
|
||||
pub struct UseFlag(String);
|
||||
|
||||
#[derive(Clone, Debug, PartialEq, Eq, Get)]
|
||||
pub struct IUseFlag {
|
||||
default: bool,
|
||||
flag: UseFlag,
|
||||
}
|
||||
|
||||
impl UseFlag {
|
||||
pub fn get(&self) -> &str {
|
||||
self.0.as_str()
|
||||
|
||||
@@ -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,
|
||||
}))
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user