use crate::{CodeBuffer, Statement};
pub trait WithTrueStatements {
fn true_statements(&self) -> &[Box<dyn Statement>];
fn with_true_statement<S>(self, true_statement: S) -> Self
where
S: 'static + Statement;
fn add_true_statement<S>(&mut self, true_statement: S)
where
S: 'static + Statement;
fn write_true_statements(&self, b: &mut CodeBuffer, level: usize) {
for statement in self.true_statements() {
statement.write(b, level);
}
}
fn write_true_curly_statement_block(&self, b: &mut CodeBuffer, level: usize) {
if self.true_statements().is_empty() {
b.write("{}");
} else {
b.write("{");
b.end_line();
self.write_true_statements(b, level + 1);
b.indent(level);
b.write("}");
}
}
}