2 个稳定版本
2.0.1 | 2022年7月28日 |
---|
#464 in 命令行界面
2,216 每月下载量
在 ignoreit 中使用
45KB
1K SLoC
MinColor
Colored 的简化版本,专为 no-std
环境设计,同时保持易用性!
"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");
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]
mincolor = "2"
并将以下内容添加到您的 lib.rs
或 main.rs
extern crate mincolor; // not needed in Rust 2018+
use mincolor::*;
// 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_
来指定。一点也不难。
真彩色
MinColor 支持真彩色,您可以指定任意任意的 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 colored when testing with
# `cargo test --feature dumb_terminal`
dumb_terminal = ["mincolor/no-color"]
您可以使用 mincolor::control::set_override
方法获得更精细的控制。
使用 Docker 构建项目
安装 Docker
请参考以下安装说明:[此处](https://docs.docker.net.cn/v17.12/install/)
构建 Docker 镜像
docker build-t colored_image.
构建库
docker run--rm-it-v"$PWD":/src-u `id-u`:`id-g` colored_image/bin/bash-c"cargo build"
测试库
docker run--rm-it-v"$PWD":/src-u `id-u`:`id-g` colored_image/bin/bash-c"cargo test"
待办事项
- 更多测试?:我们始终欢迎更多的测试!请贡献力量!
鸣谢
如果没有这个出色的 Ruby gem colored,这个库就不会是现在这个样子。
感谢 ansi_term crate 提供了参考实现,这对使这个 crate 输出正确的字符串有很大帮助。
许可协议
Mozilla Public License 2.0。请参阅存储库根目录下的 LICENSE 文件。
在非法律术语中,这意味着
- 如果您修复了一个错误,您必须给我修复的代码(这是公平的)
- 如果您更改/扩展了 API,您必须给我在 MPL2 下的文件中更改的代码。
- 您不能为此代码中的任何事情起诉我
- 除此之外,您几乎可以随心所欲。请参阅 LICENSE 文件以获取详细信息。
贡献者
- Juliette Cordor: @jewlexx
- Thomas Wickham: @mackwic
- Corey "See More" Richardson: @cmr
- Iban Eguia: @Razican
- Alexis "Horgix" Chotard: @horgix
- Keith Yeung: @KiChjang
- Kyle Galloway: @kylegalloway
- 萧路: @lukehsiao
- curtlawrence: @kurtlawrence