1 个稳定版本
1.0.0 | 2022年9月13日 |
---|
#844 在 命令行界面
31 每月下载量
在 2 crates 中使用
62KB
1.5K SLoC
Painted
终端着色如此简单,你已经知道如何做了!
let myawesomecolor = CustomColor::new(0,255,41);
"this is blue".blue();
"this is red".red();
"this is red on blue".red().on_blue();
"this is also red on blue".on_blue().red();
"you can use truecolor values too!".truecolor(0, 255, 136);
"background truecolor also works :)".on_truecolor(135, 28, 167);
"bright colors are welcome as well".on_bright_blue().bright_red();
"you can also make bold comments".bold();
println!("{} {} {}", "or use".cyan(), "any".italic().yellow(), "string type".cyan());
"or change advice. This is red".yellow().blue().red();
"or clear things up. This is default color and style".red().bold().clear();
"purple and magenta are the same".purple().magenta();
"and so are normal and clear".normal().clear();
"you can specify color by string".color("blue").on_color("red");
"Wow this is a custom color palette!".custom_color(myawesomecolor);
String::from("this also works!").green().bold();
format!("{:30}", "format works as expected. This will be padded".blue());
format!("{:.3}", "and this will be green but truncated to 3 chars".green());
如何使用
在您的 Cargo.toml
中添加此内容
[dependencies]
painted = "1"
并将此添加到您的 lib.rs
或 main.rs
extern crate painted; // not needed in Rust 2018+
use painted::*;
// test the example with `cargo run --example most_simple`
fn main() {
// TADAA!
println!("{} {} !", "it".green(), "works".blue().bold());
}
特性
- 安全 Rust,易于使用,最小依赖,完整的测试套件
- 尊重
CLICOLOR
/CLICOLOR_FORCE
行为(请参阅 规范) - 尊重
NO_COLOR
行为(请参阅 规范) - 在 Linux、MacOS 和 Windows(PowerShell)上运行
颜色
- 黑色
- 红色
- 绿色
- 黄色
- 蓝色
- 洋红色(或紫色)
- 青色
- 白色
亮色:在颜色前加上 bright_
。就这么简单。背景颜色:在颜色前加上 on_
。就这么简单。亮色背景颜色:在颜色前加上 on_bright_
。一点也不难。
真彩色
painted 支持真彩色,您可以指定任何任意的 rgb 值。
此功能只能在支持真彩色的终端中正确工作(即大多数现代终端)。
您可以通过检查终端上的环境变量 $COLORTERM
的值来检查您的终端是否支持真彩色。值为 truecolor
或 24bit
表示它将正常工作。
样式
- 粗体
- 下划线
- 斜体
- 暗淡
- 反转
- 闪烁
- 隐藏
- 删除线
您可以通过使用 normal()
或 clear()
在任何时候清除颜色 和 样式。
高级控制
从字符串动态获取颜色
由于Color
实现了FromStr
,因此From<&str>
和From<String>
,你可以轻松地将字符串转换为颜色,如下所示
// the easy way
"blue string yo".color("blue");
// this will default to white
"white string".color("zorglub");
// the safer way via a Result
let color_res : Result<Color, ()> = "zorglub".parse();
"red string".color(color_res.unwrap_or(Color::Red));
颜色控制
如果你想在编译时禁用任何颜色,你可以简单地使用no-color
功能。
例如,你可以在你的Cargo.toml
中这样做,以禁用测试中的颜色
[features]
# this effectively enable the feature `no-color` of painted when testing with
# `cargo test --feature dumb_terminal`
dumb_terminal = ["painted/no-color"]
你可以使用更精细的控制,通过使用painted::control::set_override
方法。
致谢
感谢ansi_term crate提供了参考实现,这极大地帮助了这个crate输出正确的字符串。
许可证
Mozilla公共许可证2.0。请参阅存储库根目录下的LICENSE文件。
用非法律术语来说,这意味着
- 如果你修复了一个错误,你必须给我修复的代码(这是公平的)
- 如果你更改/扩展了API,你必须给我你更改的MPL2下的文件中的代码。
- 你不能为此代码起诉我
- 除此之外,你可以做几乎任何事情。请参阅LICENSE文件以获取详细信息。
贡献者
- Thomas Wickham: @mackwic
- Corey "See More" Richardson: @cmr
- Iban Eguia: @Razican
- Alexis "Horgix" Chotard: @horgix
- Keith Yeung: @KiChjang
- Kyle Galloway: @kylegalloway
- Luke Hsiao: @lukehsiao
- kurtlawrence: @kurtlawrence
- Demir Yerli : @mrquantumoff
依赖关系
~240KB