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}