diff options
Diffstat (limited to 'rprt-engine/src/expression.rs')
| -rw-r--r-- | rprt-engine/src/expression.rs | 16 |
1 files changed, 15 insertions, 1 deletions
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<Composite>, h: Box<Composite>, }, + + Group { + operations: Vec<Composite>, + }, } 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))"); } } |
