4 releases (breaking)

0.4.0 Nov 6, 2022
0.3.0 Aug 29, 2021
0.2.0 Aug 21, 2021
0.1.0 Dec 26, 2020

MIT license

34KB
801 lines

cursormatrix

Simple and naive TUI Library for Rust

ci status

Example usage

use cursormatrix::{Direction, Event, Input, Term};

fn handle_event(ev: &Event, term: &mut Term) -> bool {
    match ev {
        &Event::Ctrl(Input::Chars(ref s)) => match s.as_str() {
            "C" => return false,
            _ => (),
        },
        &Event::Raw(Input::Arrow(Direction::Up)) => term.move_up().unwrap(),
        &Event::Raw(Input::Arrow(Direction::Down)) => term.move_down().unwrap(),
        &Event::Raw(Input::BackSpace) => term.cursor.backspace().unwrap(),
        &Event::Raw(Input::Chars(ref s)) => term.print(&s).unwrap(),
        &Event::TermSize(w, h) => term.matrix.refresh(w, h),
        _ => (),
    }
    true
}

fn main() {
    let (mut term, erx) = Term::with_input(true).expect("term");
    term.print("edit").unwrap();
    loop {
        if match erx.recv() {
            Ok(ev) => !handle_event(&ev, &mut term),
            Err(_) => false,
        } {
            break;
        }
    }
}

Test

cargo test

Example

cargo run example --debug
cat FILE | cargo run example --filter

Dependencies

~1–12MB
~142K SLoC