[go: up one dir, main page]

Crate vt100

Crate vt100 

Source
Expand description

This crate parses a terminal byte stream and provides an in-memory representation of the rendered contents.

§Overview

This is essentially the terminal parser component of a graphical terminal emulator pulled out into a separate crate. Although you can use this crate to build a graphical terminal emulator, it also contains functionality necessary for implementing terminal applications that want to run other terminal applications - programs like screen or tmux for example.

§Synopsis

let mut parser = vt100::Parser::new(24, 80, 0);

let screen = parser.screen().clone();
parser.process(b"this text is \x1b[31mRED\x1b[m");
assert_eq!(
    parser.screen().cell(0, 13).unwrap().fgcolor(),
    vt100::Color::Idx(1),
);

let screen = parser.screen().clone();
parser.process(b"\x1b[3D\x1b[32mGREEN");
assert_eq!(
    parser.screen().contents_formatted(),
    &b"\x1b[?25h\x1b[m\x1b[H\x1b[Jthis text is \x1b[32mGREEN"[..],
);
assert_eq!(
    parser.screen().contents_diff(&screen),
    &b"\x1b[1;14H\x1b[32mGREEN"[..],
);

Structs§

Cell
Represents a single terminal cell.
Parser
A parser for terminal output which produces an in-memory representation of the terminal contents.
Screen
Represents the overall terminal state.

Enums§

Color
Represents a foreground or background color for cells.
MouseProtocolEncoding
The encoding to use for the enabled MouseProtocolMode.
MouseProtocolMode
The xterm mouse handling mode currently in use.

Traits§

Callbacks
This trait is used by the parser to handle extra escape sequences that don’t have an impact on the terminal screen directly.