VTPushParser

Struct VTPushParser 

Source
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

Source

pub const fn new() -> Self

Source

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.

Source

pub const fn new_with_interest<const INTEREST: u8>() -> VTPushParser<INTEREST>

Source§

impl<const INTEREST: u8> VTPushParser<INTEREST>

Source

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() });
Source

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.

Source

pub fn is_ground(&self) -> bool

Returns true if the parser is in the ground state.

Source

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.

Source

pub fn finish<F: FnMut(VTEvent<'_>)>(&mut self, _cb: &mut F)

Trait Implementations§

Source§

impl Default for VTPushParser

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

§

impl<const INTEREST: u8> Freeze for VTPushParser<INTEREST>

§

impl<const INTEREST: u8> RefUnwindSafe for VTPushParser<INTEREST>

§

impl<const INTEREST: u8> Send for VTPushParser<INTEREST>

§

impl<const INTEREST: u8> Sync for VTPushParser<INTEREST>

§

impl<const INTEREST: u8> Unpin for VTPushParser<INTEREST>

§

impl<const INTEREST: u8> UnwindSafe for VTPushParser<INTEREST>

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.