Skip to main content

rl_lang/interpreter/stdlib/terminal/
cursor_row.rs

1use crate::interpreter::stdlib::common::{verr, vnl, vok, vs};
2use crate::interpreter::stdlib::terminal::common::extract_u16;
3use crate::interpreter::{evaluator::Evaluator, values::Value};
4use crossterm::{cursor::MoveToRow, execute};
5use std::io::stdout;
6
7pub fn func(_: &mut Evaluator, args: Value) -> Value {
8    let col = match extract_u16(args, "row") {
9        Ok(a) => a,
10        Err(e) => return verr!(vs!(e)),
11    };
12    match execute!(stdout(), MoveToRow(col)) {
13        Err(e) => verr!(vs!(format!("term_move_to_row(): {}", e))),
14        Ok(_) => vok!(vnl!()),
15    }
16}