nom_kconfig/entry/
configdefault.rs1use nom::{
2 bytes::complete::tag,
3 combinator::map,
4 multi::many1,
5 sequence::{pair, preceded},
6 IResult, Parser,
7};
8#[cfg(feature = "deserialize")]
9use serde::Deserialize;
10#[cfg(feature = "serialize")]
11use serde::Serialize;
12
13use crate::{
14 attribute::{parse_default, DefaultAttribute},
15 entry::config::parse_config_symbol,
16 util::ws,
17 KconfigInput,
18};
19
20#[derive(Debug, Clone, PartialEq)]
22#[cfg_attr(feature = "hash", derive(Hash))]
23#[cfg_attr(feature = "serialize", derive(Serialize))]
24#[cfg_attr(feature = "deserialize", derive(Deserialize))]
25pub struct ConfigDefault {
26 pub symbol: String,
27 pub default_attributes: Vec<DefaultAttribute>,
28}
29
30pub fn parse_configdefault(input: KconfigInput) -> IResult<KconfigInput, ConfigDefault> {
31 map(
32 pair(
33 preceded(ws(tag("configdefault")), ws(parse_config_symbol)),
34 many1(parse_default),
35 ),
36 |(symbol, default_attributes)| ConfigDefault {
37 symbol: symbol.to_string(),
38 default_attributes,
39 },
40 )
41 .parse(input)
42}