From f24bc43906b3d310e3d558a01b2d446fe977a4ba Mon Sep 17 00:00:00 2001 From: tslil Date: Sat, 18 Oct 2025 23:58:30 +0100 Subject: Parse & explain groups! --- rprt-engine/src/expression.rs | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) (limited to 'rprt-engine/src/expression.rs') diff --git a/rprt-engine/src/expression.rs b/rprt-engine/src/expression.rs index ba433cf..fcb1ff1 100644 --- a/rprt-engine/src/expression.rs +++ b/rprt-engine/src/expression.rs @@ -29,6 +29,10 @@ pub enum Composite { g: Box, h: Box, }, + + Group { + operations: Vec, + }, } impl Display for Composite { @@ -54,6 +58,16 @@ impl Display for Composite { Hook { kind, left, right } => write!(fmtr, "({left}{kind}{right})"), Train2 { f, g } => write!(fmtr, "({f} {g})"), Train3 { f, g, h } => write!(fmtr, "({f} {g} {h})"), + Group { operations } => { + write!(fmtr, "{{")?; + for (i, op) in operations.iter().enumerate() { + if i > 0 { + write!(fmtr, " , ")?; + } + write!(fmtr, "{}", op)?; + } + write!(fmtr, "}}") + } } } } @@ -212,6 +226,6 @@ mod tests { let formatted = format!("{}", comp); println!("Formatted: {}", formatted); - assert_eq!(formatted, "(~'x/re/ (c 5) e>d)"); + assert_eq!(formatted, "(~'x/re/ (c 5) (e>d))"); } } -- cgit v1.2.3