yum 0.0.1

Component-based TUI framework
Documentation
use anyhow::Result;
use crossterm::ExecutableCommand;
use crossterm::cursor::MoveTo;
use crossterm::terminal::{Clear, ClearType};
use std::io::stdout;

/// Clean the terminal.
pub fn clean() -> Result<()> {
    let mut stdout = stdout();
    stdout.execute(Clear(ClearType::All))?;
    stdout.execute(MoveTo(0, 0))?;
    Ok(())
}

#[macro_export]
macro_rules! cprintln {
    () => {
        {
            use std::io::stdout;
            use crossterm::ExecutableCommand;

            let mut stdout = stdout();
            stdout.execute(MoveDown(1))?;
            stdout.execute(MoveToColumn(0))?;
        }
    };
    ($($arg:tt)*) => {
        {
            use std::io::stdout;
            use crossterm::{ExecutableCommand, style::Print};

            let mut stdout = stdout();
            let txt = format!($($arg)*);
            stdout.execute(Print(txt))?;
            stdout.execute(MoveDown(1))?;
            stdout.execute(MoveToColumn(0))?;
        }
    };
}