nom_kconfig/entry/
comment.rs

1use nom::{bytes::complete::tag, combinator::map, multi::many0, IResult, Parser};
2#[cfg(feature = "deserialize")]
3use serde::Deserialize;
4#[cfg(feature = "serialize")]
5use serde::Serialize;
6
7use crate::{
8    attribute::{depends_on::parse_depends_on, prompt::parse_prompt_value, Attribute},
9    util::ws,
10    KconfigInput,
11};
12
13/// This defines a comment which is displayed to the user during the configuration process and is also echoed to the output files. The only possible options are dependencies.
14#[derive(Debug, Clone, PartialEq)]
15#[cfg_attr(feature = "hash", derive(Hash))]
16#[cfg_attr(feature = "serialize", derive(Serialize))]
17#[cfg_attr(feature = "deserialize", derive(Deserialize))]
18pub struct Comment {
19    pub prompt: String,
20    pub dependencies: Vec<Attribute>,
21}
22
23pub fn parse_comment(input: KconfigInput) -> IResult<KconfigInput, Comment> {
24    map(
25        (
26            ws(tag("comment")),
27            ws(parse_prompt_value),
28            many0(ws(parse_depends_on)),
29        ),
30        |(_, prompt, dependencies)| Comment {
31            prompt: prompt.to_string(),
32            dependencies,
33        },
34    )
35    .parse(input)
36}