pub struct VTPushParser<const INTEREST: u8 = VT_PARSER_INTEREST_DEFAULT> { /* private fields */ }Expand description
A push parser for the VT/xterm protocol.
The parser can be configured to only emit certain types of events by setting
the INTEREST parameter.
Implementations§
Source§impl VTPushParser
impl VTPushParser
pub const fn new() -> Self
Sourcepub fn decode_buffer<'a>(input: &'a [u8], cb: impl for<'b> FnMut(VTEvent<'b>))
pub fn decode_buffer<'a>(input: &'a [u8], cb: impl for<'b> FnMut(VTEvent<'b>))
Decode a buffer of bytes into a series of events.
pub const fn new_with_interest<const INTEREST: u8>() -> VTPushParser<INTEREST>
Source§impl<const INTEREST: u8> VTPushParser<INTEREST>
impl<const INTEREST: u8> VTPushParser<INTEREST>
Sourcepub fn feed_with<'this, 'input, F: VTEventCallback>(
&'this mut self,
input: &'input [u8],
cb: F,
)
pub fn feed_with<'this, 'input, F: VTEventCallback>( &'this mut self, input: &'input [u8], cb: F, )
Feed bytes into the parser. This is the main entry point for the parser. It will call the callback with events as they are emitted.
The VTEventCallback callback must be valid for the lifetime of the
feed_with call. The VTEventCallback trait is implemented for all
function pointers and closures, as well as mutable references to them.
This function may emit any number of events (including zero), depending on the state of the internal parser.
§With a closure
use vt_push_parser::{VTPushParser, event::VTEvent};
let mut parser = VTPushParser::new();
parser.feed_with(b"\x1b[32mHello, world!\x1b[0m", |event: VTEvent| {
println!("{:?}", event);
});§With a custom callback
use vt_push_parser::{VTPushParser, VTEventCallback, event::VTEvent};
struct MyCallback {
output: String,
}
impl VTEventCallback for MyCallback {
fn event(&mut self, event: VTEvent) {
self.output.push_str(&format!("{:?}", event));
}
}
let mut parser = VTPushParser::new();
parser.feed_with(b"\x1b[32mHello, world!\x1b[0m", MyCallback { output: String::new() });Sourcepub fn feed_with_abortable<'this, 'input, F: VTEventCallbackAbortable>(
&'this mut self,
input: &'input [u8],
cb: F,
) -> usize
pub fn feed_with_abortable<'this, 'input, F: VTEventCallbackAbortable>( &'this mut self, input: &'input [u8], cb: F, ) -> usize
Feed bytes into the parser. This is the main entry point for the parser. It will call the callback with events as they are emitted.
The callback must be valid for the lifetime of the feed_with call.
Returning true will continue parsing, while returning false will
stop.
The callback may emit any number of events (including zero), depending on the state of the internal parser.
This function returns the number of bytes processed. Note that some bytes may have been processed any not emitted.
Sourcepub fn idle(&mut self) -> Option<VTEvent<'static>>
pub fn idle(&mut self) -> Option<VTEvent<'static>>
Feed an idle event into the parser. This will emit a C0(ESC) event if the parser is in the Escape state, and will silently cancel any EscInt state.