#ansi-term #string #color-string #term #terminal-colors #term-painter #color

painted

彩色重生的(尽管我不会维护它太多,因为我只需要发布 colored 的新版本)

1 个稳定版本

1.0.0 2022年9月13日

#844命令行界面

31 每月下载量
2 crates 中使用

MPL-2.0 许可证

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.rsmain.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 的值来检查您的终端是否支持真彩色。值为 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 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文件以获取详细信息。

贡献者

依赖关系

~240KB