1 use crate::pp::{BeginToken, BreakToken, Breaks, IndentStyle, Printer, Token, SIZE_INFINITY};
6 pub fn rbox(&mut self, indent: isize, breaks: Breaks) {
7 self.scan_begin(BeginToken { indent: IndentStyle::Block { offset: indent }, breaks })
10 /// Inconsistent breaking box
11 pub fn ibox(&mut self, indent: isize) {
12 self.rbox(indent, Breaks::Inconsistent)
15 /// Consistent breaking box
16 pub fn cbox(&mut self, indent: isize) {
17 self.rbox(indent, Breaks::Consistent)
20 pub fn visual_align(&mut self) {
21 self.scan_begin(BeginToken { indent: IndentStyle::Visual, breaks: Breaks::Consistent });
24 pub fn break_offset(&mut self, n: usize, off: isize) {
25 self.scan_break(BreakToken {
27 blank_space: n as isize,
28 ..BreakToken::default()
32 pub fn end(&mut self) {
36 pub fn eof(mut self) -> String {
41 pub fn word<S: Into<Cow<'static, str>>>(&mut self, wrd: S) {
42 let string = wrd.into();
43 self.scan_string(string)
46 fn spaces(&mut self, n: usize) {
47 self.break_offset(n, 0)
50 pub fn zerobreak(&mut self) {
54 pub fn space(&mut self) {
58 pub fn hardbreak(&mut self) {
59 self.spaces(SIZE_INFINITY as usize)
62 pub fn is_beginning_of_line(&self) -> bool {
63 match self.last_token() {
64 Some(last_token) => last_token.is_hardbreak_tok(),
69 pub fn hardbreak_tok_offset(off: isize) -> Token {
70 Token::Break(BreakToken {
72 blank_space: SIZE_INFINITY,
73 ..BreakToken::default()
77 pub fn trailing_comma(&mut self) {
78 self.scan_break(BreakToken { pre_break: Some(','), ..BreakToken::default() });
81 pub fn trailing_comma_or_space(&mut self) {
82 self.scan_break(BreakToken {
85 ..BreakToken::default()
91 pub fn is_hardbreak_tok(&self) -> bool {
92 *self == Printer::hardbreak_tok_offset(0)