rl_lang/interpreter/stdlib/terminal/
attr.rs1use crate::interpreter::stdlib::common::{verr, vnl, vok, vs};
2use crate::interpreter::{evaluator::Evaluator, values::Value};
3use crossterm::{
4 execute,
5 style::{Attribute, SetAttribute},
6};
7use std::io::stdout;
8
9fn set_attr(attr: Attribute, name: &str) -> Value {
10 match execute!(stdout(), SetAttribute(attr)) {
11 Err(e) => verr!(vs!(format!("{}(): {}", name, e))),
12 Ok(_) => vok!(vnl!()),
13 }
14}
15
16pub fn std_term_bold(_: &mut Evaluator) -> Value {
17 set_attr(Attribute::Bold, "term_bold")
18}
19
20pub fn std_term_dim(_: &mut Evaluator) -> Value {
21 set_attr(Attribute::Dim, "term_dim")
22}
23
24pub fn std_term_italic(_: &mut Evaluator) -> Value {
25 set_attr(Attribute::Italic, "term_italic")
26}
27
28pub fn std_term_underline(_: &mut Evaluator) -> Value {
29 set_attr(Attribute::Underlined, "term_underline")
30}
31
32pub fn std_term_blink(_: &mut Evaluator) -> Value {
33 set_attr(Attribute::SlowBlink, "term_blink")
34}
35
36pub fn std_term_reverse(_: &mut Evaluator) -> Value {
37 set_attr(Attribute::Reverse, "term_reverse")
38}
39
40pub fn std_term_crossed_out(_: &mut Evaluator) -> Value {
41 set_attr(Attribute::CrossedOut, "term_crossed_out")
42}
43
44pub fn std_term_reset_attr(_: &mut Evaluator) -> Value {
45 set_attr(Attribute::Reset, "term_reset_attr")
46}