mimium_lang/utils/
miniprint.rs

1pub trait MiniPrint {
2    fn simple_print(&self) -> String;
3
4    fn pretty_print(&self) -> String {
5        let src = self.simple_print();
6        let mut level = 0;
7        let mut res = String::new();
8        let indent = "   ";
9        for c in src.chars() {
10            match c {
11                '(' => {
12                    level += 1;
13                }
14                ')' => {
15                    level -= 1;
16                }
17                ' ' => {
18                    res.push('\n');
19                    for _i in 0..level {
20                        res.push_str(indent);
21                    }
22                }
23                _ => {}
24            }
25
26            res.push(c);
27        }
28        res
29    }
30}