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}