#终端颜色 #字符串 #终端 #ansi-term #颜色字符串 #颜色

无std mincolor

在不使用 std crate 的情况下,向您的终端添加颜色的最简单方法!

2 个稳定版本

2.0.1 2022年7月28日

#464 in 命令行界面

Download history 300/week @ 2024-03-14 415/week @ 2024-03-21 462/week @ 2024-03-28 596/week @ 2024-04-04 649/week @ 2024-04-11 715/week @ 2024-04-18 413/week @ 2024-04-25 778/week @ 2024-05-02 528/week @ 2024-05-09 824/week @ 2024-05-16 898/week @ 2024-05-23 611/week @ 2024-05-30 971/week @ 2024-06-06 428/week @ 2024-06-13 417/week @ 2024-06-20 370/week @ 2024-06-27

2,216 每月下载量
ignoreit 中使用

MPL-2.0 许可证

45KB
1K SLoC

MinColor

Build Status Crates.io Crates.io

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.rsmain.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 的值来检查您的终端是否支持真彩色。值为 truecolor24bit 则表示它将正常工作。

样式

  • 粗体
  • 下划线
  • 斜体
  • 半透明
  • 反转
  • 闪烁
  • 隐藏
  • 删除线

您可以通过使用 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 文件以获取详细信息。

贡献者

无运行时依赖