rl_lang/interpreter/stdlib/terminal/
set_bg.rs1use crate::interpreter::stdlib::common::{try_fn, verr, vnl, vok, vs};
2use crate::interpreter::stdlib::terminal::common::extract_byte;
3use crate::interpreter::{evaluator::Evaluator, values::Value};
4use crossterm::{
5 execute,
6 style::{Color, SetBackgroundColor},
7};
8use std::io::stdout;
9
10pub fn func(_: &mut Evaluator, r: Value, g: Value, b: Value) -> Value {
11 let r = match extract_byte(r, "r") {
12 Ok(v) => v,
13 Err(e) => return verr!(vs!(e)),
14 };
15 let b = match extract_byte(b, "b") {
16 Ok(v) => v,
17 Err(e) => return verr!(vs!(e)),
18 };
19 let g = match extract_byte(g, "r") {
20 Ok(v) => v,
21 Err(e) => return verr!(vs!(e)),
22 };
23
24 try_fn!(
25 "term_set_bg",
26 execute!(stdout(), SetBackgroundColor(Color::Rgb { r, g, b }))
27 );
28 vok!(vnl!())
29}