nom_config_in/entry/
define.rs1use nom::{
2 bytes::complete::tag,
3 character::complete::space0,
4 combinator::map,
5 multi::many1,
6 sequence::{preceded, tuple},
7 IResult,
8};
9use serde::Serialize;
10
11use crate::{symbol::parse_constant_symbol, util::ws, ConfigInInput};
12
13#[derive(Debug, Clone, Serialize, PartialEq)]
14pub struct Define {
15 pub configs: Vec<String>,
16}
17
18pub fn dd(input: ConfigInInput) -> IResult<ConfigInInput, String> {
19 preceded(space0, map(parse_constant_symbol, |d| d.to_string()))(input)
20}
21
22pub fn parse_define(input: ConfigInInput) -> IResult<ConfigInInput, Define> {
23 map(tuple((ws(tag("define")), many1(dd))), |(_, value)| Define {
24 configs: value,
25 })(input)
26}