Coverage Report

Created: 2025-02-25 06:39

/rust/registry/src/index.crates.io-6f17d22bba15001f/anes-0.1.6/src/sequences/buffer.rs
Line
Count
Source (jump to first uncovered line)
1
sequence!(
2
    /// Switches to the alternate buffer.
3
    /// 
4
    /// Use the [`SwitchBufferToNormal`](struct.SwitchBufferToNormal.html) sequence to switch
5
    /// back to the normal buffer.
6
    /// 
7
    /// # Examples
8
    /// 
9
    /// ```no_run
10
    /// use std::io::{stdout, Write};
11
    /// use anes::{SwitchBufferToAlternate, SwitchBufferToNormal};
12
    ///
13
    /// let mut stdout = stdout();
14
    /// write!(stdout, "{}", SwitchBufferToAlternate);
15
    /// // Your app on alternate screen
16
    /// write!(stdout, "{}", SwitchBufferToNormal);
17
    /// ```
18
    struct SwitchBufferToAlternate => csi!("?1049h")
19
);
20
21
sequence!(
22
    /// Switches to the normal buffer.
23
    /// 
24
    /// # Examples
25
    /// 
26
    /// ```no_run
27
    /// use std::io::{stdout, Write};
28
    /// use anes::{SwitchBufferToAlternate, SwitchBufferToNormal};
29
    ///
30
    /// let mut stdout = stdout();
31
    /// write!(stdout, "{}", SwitchBufferToAlternate);
32
    /// // Your app on alternate screen
33
    /// write!(stdout, "{}", SwitchBufferToNormal);
34
    /// ```
35
    struct SwitchBufferToNormal => csi!("?1049l")
36
);
37
38
sequence!(
39
    /// Scrolls up by the given number of rows.
40
    /// 
41
    /// # Examples
42
    /// 
43
    /// ```no_run
44
    /// use std::io::{stdout, Write};
45
    /// use anes::ScrollBufferUp;
46
    ///
47
    /// let mut stdout = stdout();
48
    /// // Scroll up by 5 lines
49
    /// write!(stdout, "{}", ScrollBufferUp(5));
50
    /// ```
51
    struct ScrollBufferUp(u16) =>
52
0
    |this, f| write!(f, csi!("{}S"), this.0)
53
);
54
55
sequence!(
56
    /// Scrolls down by the given number of rows.
57
    /// 
58
    /// # Examples
59
    /// 
60
    /// ```no_run
61
    /// use std::io::{stdout, Write};
62
    /// use anes::ScrollBufferDown;
63
    ///
64
    /// let mut stdout = stdout();
65
    /// // Scroll down by 10 lines
66
    /// write!(stdout, "{}", ScrollBufferDown(10));
67
    /// ```
68
    struct ScrollBufferDown(u16) =>
69
0
    |this, f| write!(f, csi!("{}T"), this.0)
70
);
71
72
sequence!(
73
    /// Clears part of the line.
74
    /// 
75
    /// # Examples
76
    /// 
77
    /// ```no_run
78
    /// use std::io::{stdout, Write};
79
    /// use anes::ClearLine;
80
    ///
81
    /// let mut stdout = stdout();
82
    /// // Clear the whole line
83
    /// write!(stdout, "{}", ClearLine::All);
84
    /// ```
85
    enum ClearLine {
86
        /// Clears from the cursor position to end of the line.
87
        Right => csi!("K"),
88
        /// Clears from the cursor position to beginning of the line.
89
        Left => csi!("1K"),
90
        /// Clears the whole line.
91
        All => csi!("2K"),
92
    }
93
);
94
95
sequence!(
96
    /// Clears part of the buffer.
97
    /// 
98
    /// # Examples
99
    /// 
100
    /// ```no_run
101
    /// use std::io::{stdout, Write};
102
    /// use anes::ClearBuffer;
103
    ///
104
    /// let mut stdout = stdout();
105
    /// // Clear the entire buffer
106
    /// write!(stdout, "{}", ClearBuffer::All);
107
    /// ```
108
    enum ClearBuffer {
109
        /// Clears from the cursor position to end of the screen.
110
        Below => csi!("J"),
111
        /// Clears from the cursor position to beginning of the screen.
112
        Above => csi!("1J"),
113
        /// Clears the entire buffer.
114
        All => csi!("2J"),
115
        /// Clears the entire buffer and all saved lines in the scrollback buffer.
116
        SavedLines => csi!("3J"),
117
    }
118
);
119
120
#[cfg(test)]
121
test_sequences!(
122
    switch_buffer_to_alternate(
123
        SwitchBufferToAlternate => "\x1B[?1049h",
124
    ),
125
    switch_buffer_to_main(
126
        SwitchBufferToNormal => "\x1B[?1049l",
127
    ),
128
    scroll_buffer_up(
129
        ScrollBufferUp(10) => "\x1B[10S",
130
    ),
131
    scroll_buffer_down(
132
        ScrollBufferDown(10) => "\x1B[10T",
133
    ),
134
    clear_line(
135
        ClearLine::Right => "\x1B[K",
136
        ClearLine::Left => "\x1B[1K",
137
        ClearLine::All => "\x1B[2K",
138
    ),
139
    clear_buffer(
140
        ClearBuffer::Below => "\x1B[J",
141
        ClearBuffer::Above => "\x1B[1J",
142
        ClearBuffer::All => "\x1B[2J",
143
        ClearBuffer::SavedLines => "\x1B[3J",
144
    ),
145
);