1use core::fmt;
2
3use crate::statement::Statement;
4
5#[derive(Debug, Clone, Default)]
7pub struct Scope {
8 pub items: Vec<Statement>,
9}
10impl Scope {
11 pub fn new() -> Scope {
12 Scope { items: vec![] }
13 }
14
15 pub fn is_valid(&self) -> bool {
16 for i in 0..self.items.len() {
17 if !self.items[i].is_valid() {
18 return false;
19 }
20 }
21
22 true
23 }
24}
25impl fmt::Display for Scope {
26 fn fmt(&self, fmt: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
27 match writeln!(fmt, "{{") {
28 Ok(_) => (),
29 Err(e) => return Err(e),
30 }
31 for i in 0..self.items.len() {
32 match write!(fmt, "{}", self.items[i]) {
33 Ok(_) => (),
34 Err(e) => return Err(e),
35 }
36 }
37 match write!(fmt, "}}") {
38 Ok(_) => (),
39 Err(e) => return Err(e),
40 }
41
42 Ok(())
43 }
44}