You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Let's say we have a terminal with 30 cols. I want to write some text to it that may contain lines over 30 chars. When that's done, I want to see what the terminal looks like, row-by-row. As far as I can tell there is no sane way to do this currently. Here's an example:
letmut parser = vt100::Parser::new(20,30,0);for i in0..4{write!(parser,"short line {}\n\r", i).unwrap();}write!(parser,"this is a line longer than 30 characters long but you wouldn't know it looking at `contents()`").unwrap();dgb!(parser.contents());
contents() is not helpful because it shows me exactly what I gave the terminal, not how it is rendered:
short line 0\nshort line 1\nshort line 2\nshort line 3\nthis is a line longer than 30 characters long but you wouldn't know it looking at contents()
I want to get this:
["short line 0","short line 1","short line 2","short line 3","this is a line longer than 30","characters long but you wouldn","'t know it looking at `content","s()`",]
So far the way I'm getting that is with this code:
letmut rows = parser
.screen().rows(0,30).collect::<Vec<_>>();// Reverse the rows and trim empty lines from the end
rows = rows
.into_iter().rev().skip_while(|line| line.is_empty()).map(|line| line.trim_end().to_string()).collect();// Un-reverse the rows and join them up with newlines
rows.reverse();
(The reason I have to reverse, skip_while, then un-reverse is because if you use control characters to mess with cursor position and erase lines, you will end up with empty lines at the bottom of the terminal that I want to exclude).
Seems like there should be a simpler way.
The text was updated successfully, but these errors were encountered:
Let's say we have a terminal with 30 cols. I want to write some text to it that may contain lines over 30 chars. When that's done, I want to see what the terminal looks like, row-by-row. As far as I can tell there is no sane way to do this currently. Here's an example:
contents()
is not helpful because it shows me exactly what I gave the terminal, not how it is rendered:I want to get this:
So far the way I'm getting that is with this code:
(The reason I have to reverse, skip_while, then un-reverse is because if you use control characters to mess with cursor position and erase lines, you will end up with empty lines at the bottom of the terminal that I want to exclude).
Seems like there should be a simpler way.
The text was updated successfully, but these errors were encountered: