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