leptosfmt_pretty_printer/
convenience.rs

1use crate::algorithm::{self, BeginToken, BreakToken, Breaks, Printer};
2use std::borrow::Cow;
3
4impl Printer {
5    pub fn ibox_indent(&mut self) {
6        self.ibox(self.settings.tab_spaces);
7    }
8
9    pub fn ibox_dedent(&mut self) {
10        self.ibox(-self.settings.tab_spaces);
11    }
12
13    pub fn ibox(&mut self, indent: isize) {
14        self.scan_begin(BeginToken {
15            offset: indent,
16            breaks: Breaks::Inconsistent,
17        });
18    }
19
20    pub fn cbox_indent(&mut self) {
21        self.cbox(self.settings.tab_spaces);
22    }
23
24    pub fn cbox_dedent(&mut self) {
25        self.cbox(-self.settings.tab_spaces);
26    }
27
28    pub fn cbox(&mut self, indent: isize) {
29        self.scan_begin(BeginToken {
30            offset: indent,
31            breaks: Breaks::Consistent,
32        });
33    }
34
35    pub fn end_dedent(&mut self) {
36        self.offset(-self.settings.tab_spaces);
37        self.end();
38    }
39
40    pub fn end(&mut self) {
41        self.scan_end();
42    }
43
44    pub fn word<S: Into<Cow<'static, str>>>(&mut self, wrd: S) {
45        let s = wrd.into();
46        self.scan_string(s);
47    }
48
49    pub fn spaces(&mut self, n: usize) {
50        self.scan_break(BreakToken {
51            blank_space: n,
52            ..BreakToken::default()
53        });
54    }
55
56    pub fn zerobreak(&mut self) {
57        self.spaces(0);
58    }
59
60    pub fn space(&mut self) {
61        self.spaces(1);
62    }
63
64    pub fn nbsp(&mut self) {
65        self.word(" ");
66    }
67
68    pub fn hardbreak(&mut self) {
69        self.spaces(algorithm::SIZE_INFINITY as usize);
70    }
71
72    pub fn space_if_nonempty(&mut self) {
73        self.scan_break(BreakToken {
74            blank_space: 1,
75            if_nonempty: true,
76            ..BreakToken::default()
77        });
78    }
79
80    pub fn hardbreak_if_nonempty(&mut self) {
81        self.scan_break(BreakToken {
82            blank_space: algorithm::SIZE_INFINITY as usize,
83            if_nonempty: true,
84            ..BreakToken::default()
85        });
86    }
87
88    pub fn trailing_comma(&mut self, is_last: bool) {
89        if is_last {
90            self.scan_break(BreakToken {
91                pre_break: Some(','),
92                ..BreakToken::default()
93            });
94        } else {
95            self.word(",");
96            self.space();
97        }
98    }
99
100    pub fn trailing_comma_or_space(&mut self, is_last: bool) {
101        if is_last {
102            self.scan_break(BreakToken {
103                blank_space: 1,
104                pre_break: Some(','),
105                ..BreakToken::default()
106            });
107        } else {
108            self.word(",");
109            self.space();
110        }
111    }
112
113    pub fn neverbreak(&mut self) {
114        self.scan_break(BreakToken {
115            never_break: true,
116            ..BreakToken::default()
117        });
118    }
119}