1 个不稳定版本

0.1.0 2023 年 8 月 29 日

#20#ansi-codes

自定义许可

43KB
447

Termal

一个用于终端特性的 Rust 库,包含 ansi 转义码。

目前该库包含 ansii 码,以及一个仅用于颜色的特殊宏。

示例

使用宏

use termal::*;

// you can use a special macro to inline the color codes, this will write
// italic text with yellow foreground and reset at the end.
printcln!("{'yellow italic}hello{'reset}");

// the macro also supports standard formatting
printcln!("{'yellow italic}{}{'reset}", "hello");

// you can also use short versions of the codes
printcln!("{'y i}{}{'_}", "hello");

// you can also use true colors with their hex codes
printcln!("{'#dd0 i}{}{'_}", "hello");

不使用宏

// Move cursor to position column 5 on line 7 and write 'hello' in italic
// yellow

use termal::codes::*;

println!("{}{YELLOW_FG}{ITALIC}hello{RESET}", move_to!(5, 7));

例如,宏 move_to! 可以接受字面量或动态值。其主要功能是如果提供字面量,则扩展为包含 ansi 码的字符串字面量。如果您提供动态值,则扩展为 format!

use termal::codes::*;

let a = move_to!(5, 7);
// expands to:
let a = "\x1b[5;7H";

let b = move_to!(2 + 3, 7);
// expands to:
let a = format!("\x1b[{};{}H", 2 + 3, 7);

渐变

您可以使用函数 termal::gradient 创建渐变

use termal::*;

// This will create foreground gradient from the rgb color `(250, 50, 170)`
// to the rgb color `(180, 50, 240)`
printcln!(
    "{}{'_}",
    gradient("BonnyAD9", gradient("BonnyAD9", (250, 50, 170), (180, 50, 240)))
)

宏语法

现在有 3 个宏:formatcprintcprintcln。它们分别相当于 formatprintprintln

它们都遵循相同的语法

  • ' 开头的花括号是颜色格式(例如 {'yellow}
  • 其他花括号由宏 format 解释

颜色格式可以包含

  • ASCII 字母的名称(例如 yellow
  • 十六进制颜色(例如 #FF125C

名称和十六进制颜色之间用空格分隔

十六进制颜色

十六进制颜色可以是 1、2、3 或 6 位。它们的解释如下

  • 单个数字颜色被解释为重复 6 次的数字(例如 #B#BBBBBB 相同)
  • 两位数字颜色被解释为重复 3 次的两个数字(例如 #AB#ABABAB 相同)
  • 三位颜色被解释为每个数字重复一次(例如:#ABC#AABBCC相同)
  • 六位颜色被解释为典型的RGB值(即:#RRGGBB

如果您想设置前景色,只需输入十六进制代码(例如:#ABCDEF),如果您想设置背景色,则立即在十六进制颜色后面跟下划线(_)(例如:#ABCDEF_

名称列表

大多数名称都有别名(例如:写whitew是相同的)。一些可以重置,这通过相同名称但以下划线(_)开头来完成。一些名称可能有/必须要有参数。这些是数字,通过在名称后直接写入来提供,多个参数由逗号分隔。如果参数是可选的,它将带有默认值放在旁边。即使没有参数,也必须存在逗号。(例如:mt5,7是有效的,mt,7是有效的,mt5,是有效的,mt,是有效的,但mt是无效的)

ASCII
  • bell:控制台铃声(产生声音)
  • backspace:向左移动一个位置
  • htabtab:水平制表符
  • move_down_scrlmds:如果需要则向下移动一行
  • newlinenl:移动到下一行的开头
  • vtab:垂直制表符
  • carriage_return | cr:移动到当前行的开头
移动光标
  • move_tomt:将光标移动到指定的位置,有两个参数,默认值是0
  • move_upmu:光标向上移动指定的数量,有一个参数,默认值是1
  • move_downmd:光标向下移动指定的数量,有一个参数,默认值是1
  • move_rightmr:光标向右移动指定的数量,有一个参数,默认值是1
  • move_leftml:光标向左移动指定的数量,有一个参数,默认值是1
  • set_downsd:将光标移动到n行下行起始位置,有一个参数,默认值是1
  • set_upsu:将光标移动到n行上行起始位置,有一个参数,默认值是1
  • move_to_columnmc:将光标移动到指定的x坐标,有一个参数,默认值为0
  • move_up_scrlmus:将光标向上移动一行,如有需要则滚动屏幕
  • save_cursaves:保存当前光标位置(单个槽位,不是后进先出)
  • load_curloatl:加载最后保存的光标位置
删除
  • erase_to_ende_:从光标删除到屏幕末尾
  • erase_from_start_e:从屏幕开始到光标删除
  • erase_screen_e_:删除整个屏幕
  • erase_alle:删除整个屏幕和滚动缓冲区
  • erase_ln_endel_:从光标删除到行末
  • erase_ln_start_el:从行首删除到光标
  • erase_lineerase_ln_el_el:删除当前行
样式和颜色
  • reset_:重置所有颜色和样式
  • bold:设置为粗体
  • faintf:设置为细体
  • italici:设置为斜体
  • underlineu:设置为下划线
  • blinkingblink:设置为闪烁
  • inverse:设置为反向(交换背景和前景)
  • invisibleinvis:设置为不可见(前景和背景相同)
  • striketroughstrike:设置为删除线
  • double_underlinedunderlinedun:设置为双下划线
  • _bold:重置粗体和细体
  • _italic_i:重置斜体
  • _underline_u:重置下划线和双下划线
  • _blinking_blink:重置闪烁
  • _inverse:重置反向
  • _invisible_invis:重置不可见
  • _striketrough_strike:重置删除线
  • black_fgblackbl:将前景设置为黑色
  • white_fgwhitew:将前景设置为白色
  • gray_fggraygr:将前景设置为灰色
  • bright_gray_fgbgraybgr:将前景设置为亮灰色
  • red_fgredr:将前景设置为红色
  • green_fggreeng:将前景设置为绿色
  • yellow_fgyellowy:将前景设置为黄色
  • magenta_fgmagentam:将前景设置为品红色
  • cyan_fgcyanc:将前景设置为青色
  • dark_red_fgdreddr:设置前景色为深红色
  • dark_green_fgdgreendg:设置前景色为深绿色
  • dark_yellow_fgdyellowdy:设置前景色为深黄色
  • dark_magenta_fgdmagentadm:设置前景色为深洋红
  • dark_cyan_fgdcyandc:设置前景色为深青色
  • _fg:重置前景色
  • black_bgblackbblb:设置背景色为黑色
  • white_bgwhitebwb:设置背景色为白色
  • gray_bggraybgrb:设置背景色为灰色
  • bright_gray_bgbgraybbgrb:设置背景色为亮灰色
  • red_bgredbrb:设置背景色为红色
  • green_bggreenbgb:设置背景色为绿色
  • yellow_bgyellowbyb:设置背景色为黄色
  • magenta_bgmagentabmb:设置背景色为洋红
  • cyan_bgcyanbcb:设置背景色为青色
  • dark_red_bgdredbdrb:设置背景色为深红色
  • dark_green_bgdgreenbdgb:设置背景色为深绿色
  • dark_yellow_bgdyellowbdyb:设置背景色为深黄色
  • dark_magenta_bgdmagentabdmb:设置背景色为深洋红
  • dark_cyan_bgdcyanbdcb:设置背景色为深青色
  • _bg:重置背景色
  • fg:设置前景色为256种颜色中的一种,有一个参数
  • bg:设置背景色为256种颜色中的一种,有一个参数
其他
  • line_wrapwrap:启用换行
  • _line_wrap_wrap:禁用换行
  • hide_cursornocur:隐藏光标
  • show_cursor_nocur:显示光标
  • save_screensscr:保存屏幕视图
  • load_screenlscr:恢复最后保存的屏幕视图
  • alt_bufabuf:启用备用缓冲区
  • _alt_buf_abuf:禁用备用缓冲区
复合
  • clearcls:清除屏幕和缓冲区并将光标移动到左上角位置(等同于e mt

依赖关系

~230KB