use nom::{
bytes::complete::tag,
character::complete::char,
combinator::opt,
multi::many0,
sequence::{terminated, tuple},
IResult,
};
use crate::intermediate::*;
use super::{common::optional_comma, constraint::constraint, sequence::sequence_component, *};
pub fn set<'a>(input: &'a str) -> IResult<&'a str, ASN1Type> {
map(
preceded(
skip_ws_and_comments(tag(SET)),
pair(
in_braces(tuple((
many0(terminated(
skip_ws_and_comments(sequence_component),
optional_comma,
)),
opt(terminated(extension_marker, opt(char(COMMA)))),
opt(many0(terminated(
skip_ws_and_comments(sequence_component),
optional_comma,
))),
))),
opt(constraint),
),
),
|m| ASN1Type::Set(m.into()),
)(input)
}
#[cfg(test)]
mod tests {}