use super::{expression::Expression, parse_if_attribute};
use crate::{util::ws, KconfigInput};
use nom::{bytes::complete::tag, combinator::map, sequence::tuple, IResult};
#[cfg(feature = "deserialize")]
use serde::Deserialize;
#[cfg(feature = "serialize")]
use serde::Serialize;
#[derive(Debug, PartialEq, Clone, Default)]
#[cfg_attr(feature = "hash", derive(Hash))]
#[cfg_attr(feature = "serialize", derive(Serialize))]
#[cfg_attr(feature = "deserialize", derive(Deserialize))]
pub struct Visible {
#[cfg_attr(
any(feature = "serialize", feature = "deserialize"),
serde(skip_serializing_if = "Option::is_none")
)]
pub r#if: Option<Expression>,
}
pub fn parse_visible(input: KconfigInput) -> IResult<KconfigInput, Visible> {
map(
tuple((ws(tag("visible")), parse_if_attribute)),
|(_s, i)| Visible { r#if: i },
)(input)
}