10 个版本
0.2.1 | 2022年1月15日 |
---|---|
0.2.0 |
|
0.1.8 | 2022年1月15日 |
#23 in #string-formatting
每月 27 次下载
75KB
280 代码行
Varity
Varity (Väri) 是一个用于将颜色和外观效果格式化到终端的 Rust 库。类似于 Python 的 Rich 库。
Väri 在芬兰语中意为“颜色”。
安装
Varity 默认包含颜色锚点功能,其他可选功能包括:”log”,”fun”,
[dependencies]
vari = "0.2.1"
功能
颜色锚点
这是默认功能。
颜色锚点类似于 bbcode 的标记,用于颜色和样式(例如. "[$red]", "[bg$yellow]", "[$bold]")
锚点
颜色
- [$black]
- [$red]
- [$green]
- [$yellow]
- [$blue]
- [$magenta]
- [$cyan]
- [$white]
- [$reset] 或 [$r] 或 [$/]
亮色
- [$bright_black] 或 [$brightblack]
- [$bright_red] 或 [$brightred]
- [$bright_green] 或 [$brightgreen]
- [$bright_yellow] 或 [$brightyellow]
- [$bright_blue] 或 [$brightblue]
- [$bright_magenta] 或 [$brightmagenta]
- [$bright_cyan] 或 [$brightcyan]
- [$bright_white] 或 [$brightwhite]
样式
- [$regular]
- [$bold]
- [$dim] 或 [$low] 或 [$low_intensity] 或 [$lowintensity]
- [$italic]
- [$underline]
- [$blink] 或 [$blinking]
- [$reverse] 或 [$reversed]
- [$invisible] 或 [$hidden]
- [$strikethrough] 或 [$strike_through]
注意:[bg$any] 是一个有效的锚点,它将被转换为 [$reversed][$any](其中 `any` 是上述颜色/样式的名称)
// [$/] is shorthand for [$reset]
let message = vari::format("[$blue]Hello, [$green]World![$/]");
println!("{}", message);
// Custom RGB!
println!("{}", vari::format("[$[114, 119, 39]]#727727![$[66, 4, 32]] Do you see it?[$/]"));
// Style anchor and also easy macros :O
vprintln!("{}Bold and Italic :O{}", "[$bold][$italic]", "[$/]");
// Background color
vprintln!("{}Backgroundssss{}[$/]", "[bg$magenta]", "[bg$[188, 188, 188]]World![$/]")
// Hexadecimal
vprintln!("[$#ffffff]Hello, [$#000000]World![$/]");
彩色化
[dependencies]
vari = { version = "0.2.1", features = ["colorize"] }
通过调用 colorize() 方法直接彩色化字符串,类似于 colored crate。
例如:“red”.colorize("red") 等同于 "[$red]red[$/]"
注意:尚未实现链式调用,因为 .colorize() 添加了 [$/],所以不能链式调用样式
参数应该是颜色的名称(与锚点颜色相同的名称)。
use vari::colorize::Colorize;
fn main() {
println!("{}", "Hello, World".colorize("cyan"));
println!("{}", "This is red".colorize("brightred"));
println!("{}", "Bold.".colorize("bold"));
}
日志
[dependencies]
vari = { version = "0.2.1", features = ["log"] }
一些 println-ish 函数用于记录日志
let log_message = vformat!("[$green]This message is send by main.rs![$/]");
let log_file = vformat!("[$dim]src/main.rs[$/]");
vari::util::log(&log_message, &log_file);
对于 .len() 不使用 ANSI
这是默认功能。
这可能在填充计算中使用,因为在彩色字符串(例如. "\x1b[31mTest\x1b[0m")中,计算的长度也包含了 "[31m" 和 "[0m",这会使填充不正确。因此,这个 trait 实现了一个 ".no_ansi()",它会移除所有的 ANSI 转义序列,然后你可以在之后执行 ".len()"。
// vari::util::log()
// Calculate padding amount between the message.
// eg. left________right
let padding_amount = w - right.no_ansi().len() - left.no_ansi().len();
let padding = " ".repeat(padding_amount);
let mut result = String::new();
result.push_str(left);
result.push_str(&padding);
result.push_str(right);
return result
娱乐
[dependencies]
vari = { version = "0.2.1", features = ["fun"] }
fn main() {
// Rainbow colors!
println!("{}", vari::fun::rainbow("Rainbow!!!"));
}
许可证
此软件包受 AGPL-3.0 许可证的保护。
依赖项
~2.1–3.5MB
~55K SLoC