1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
//! 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"[..], //! ); //! ``` // XXX this is broken with ale // #![warn(clippy::cargo)] #![warn(clippy::pedantic)] #![warn(clippy::nursery)] #![allow(clippy::cognitive_complexity)] #![allow(clippy::missing_const_for_fn)] #![allow(clippy::single_match)] #![allow(clippy::too_many_arguments)] #![allow(clippy::too_many_lines)] mod attrs; mod cell; mod grid; mod parser; mod row; mod screen; mod term; pub use attrs::Color; pub use cell::Cell; pub use parser::Parser; pub use screen::{MouseProtocolEncoding, MouseProtocolMode, Screen};