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