nom_kconfig/entry/
comment.rs1use 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::{
9 depends_on::{parse_depends_on, DependsOn},
10 prompt::parse_prompt_value,
11 },
12 util::ws,
13 KconfigInput,
14};
15
16#[derive(Debug, Clone, PartialEq)]
18#[cfg_attr(feature = "hash", derive(Hash))]
19#[cfg_attr(feature = "serialize", derive(Serialize))]
20#[cfg_attr(feature = "deserialize", derive(Deserialize))]
21pub struct Comment {
22 pub prompt: String,
23 pub dependencies: Vec<DependsOn>,
24}
25
26pub fn parse_comment(input: KconfigInput) -> IResult<KconfigInput, Comment> {
27 map(
28 (
29 ws(tag("comment")),
30 ws(parse_prompt_value),
31 many0(ws(parse_depends_on)),
32 ),
33 |(_, prompt, dependencies)| Comment {
34 prompt: prompt.to_string(),
35 dependencies,
36 },
37 )
38 .parse(input)
39}