mirror of
https://github.com/Xyverle/neutuino.git
synced 2026-08-29 07:40:03 -04:00
add convenience constants & example
This commit is contained in:
46
examples/test.rs
Normal file
46
examples/test.rs
Normal file
@@ -0,0 +1,46 @@
|
||||
#![warn(clippy::all, clippy::pedantic)]
|
||||
|
||||
use std::{time::Duration, io};
|
||||
use neutuino::ansi::{COLORS_BG, COLORS_FG, STYLE_BOLD, STYLE_ITALIC, STYLE_RESET, STYLE_UNDERLINE, move_cursor_to_column, set_window_title};
|
||||
use neutuino::os::{enable_ansi, get_terminal_size};
|
||||
use neutuino::input::{poll_input, Event, KeyEvent};
|
||||
|
||||
|
||||
fn print_line_style_reset(string: &str) {
|
||||
println!("{}{}{}", string, STYLE_RESET, move_cursor_to_column(0));
|
||||
}
|
||||
|
||||
fn main() -> io::Result<()> {
|
||||
let all_styles = format!("{STYLE_BOLD}{STYLE_ITALIC}{STYLE_UNDERLINE}");
|
||||
let _raw_terminal = neutuino::os::RawTerminal::new()?;
|
||||
enable_ansi()?;
|
||||
|
||||
println!("q to quit{}", move_cursor_to_column(0));
|
||||
let next = |x: usize| (x + 1) % COLORS_FG.len();
|
||||
|
||||
let terminal_size = get_terminal_size()?;
|
||||
let terminal_size_str = format!("{terminal_size:?}");
|
||||
print!("{}", set_window_title(terminal_size_str).unwrap());
|
||||
|
||||
let mut counter = 0;
|
||||
|
||||
loop {
|
||||
let mut input = Err(io::ErrorKind::Other.into());
|
||||
while input.is_err() {
|
||||
input = poll_input(Duration::new(1, 0));
|
||||
}
|
||||
let input = input.unwrap();
|
||||
let string = format!("{input:?}");
|
||||
print_line_style_reset(&format!(
|
||||
"{all_styles}{}{}{string}",
|
||||
COLORS_FG[counter],
|
||||
COLORS_BG[next(counter)]
|
||||
));
|
||||
// q to quit
|
||||
if input == Event::Key(KeyEvent::Char('q')) {
|
||||
break;
|
||||
}
|
||||
counter = next(counter);
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
Reference in New Issue
Block a user