Skip to main content

nom_kconfig/entry/
configdefault.rs

1use 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/// This defines a config symbol.
20#[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}