Skip to content

doy/vt100-rust

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Jan 12, 2025
ec615f0 · Jan 12, 2025
Aug 7, 2023
Nov 21, 2021
Jan 12, 2025
Jan 12, 2025
Jan 12, 2025
Jan 12, 2025
Oct 29, 2019
Mar 6, 2021
May 12, 2016
Jan 11, 2025
Jan 12, 2025
Apr 28, 2016
Nov 10, 2019
Jan 11, 2025

Repository files navigation

vt100

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"[..],
);

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published