nom_kconfig/attribute/requires.rs
1use nom::{bytes::complete::tag, sequence::preceded, IResult, Parser};
2
3use super::expression::{parse_expression, Expression};
4use crate::{util::ws, KconfigInput};
5
6/// Parses a `requires` attribute.
7/// TODO: I think this attribute is deprecated.
8///
9/// /// Parses a `range` attribute.
10/// # Example
11/// ```
12/// use nom_kconfig::{
13/// assert_parsing_eq,
14/// attribute::{
15/// parse_requires,
16/// AndExpression, Atom, CompareExpression, CompareOperator, Expression, OrExpression, Term},
17/// symbol::Symbol,
18/// };
19///
20/// assert_parsing_eq!(
21/// parse_requires,
22/// " requires KVM",
23/// Ok((
24/// "",
25/// Expression::Term(AndExpression::Term(Term::Atom(
26/// Atom::Symbol(Symbol::Constant("KVM".to_string())
27/// ))))
28/// ))
29/// )
30/// ```
31pub fn parse_requires(input: KconfigInput) -> IResult<KconfigInput, Expression> {
32 preceded(ws(tag("requires")), ws(parse_expression)).parse(input)
33}