pddl/parsers/
domain_constraints_def.rs1use nom::combinator::map;
4
5use crate::parsers::{parse_con_gd, prefix_expr, ParseResult, Span};
6use crate::types::DomainConstraintsDef;
7
8pub fn parse_domain_constraints_def<'a, T: Into<Span<'a>>>(
22 input: T,
23) -> ParseResult<'a, DomainConstraintsDef> {
24 map(
25 prefix_expr(":constraints", parse_con_gd),
26 DomainConstraintsDef::new,
27 )(input.into())
28}
29
30impl crate::parsers::Parser for DomainConstraintsDef {
31 type Item = DomainConstraintsDef;
32
33 fn parse<'a, S: Into<Span<'a>>>(input: S) -> ParseResult<'a, Self::Item> {
35 parse_domain_constraints_def(input)
36 }
37}
38
39#[cfg(test)]
40mod tests {
41 use crate::parsers::UnwrapValue;
42 use crate::{ConGD, DomainConstraintsDef, Parser};
43
44 #[test]
45 fn test_parse() {
46 let input = "(:constraints (and))";
47 assert!(DomainConstraintsDef::parse(input)
48 .is_value(DomainConstraintsDef::new(ConGD::new_and([]))));
49 }
50}