#ansi-colors #text-color #color #ansi #macro #terminal-colors #text-formatting

colorize-macros

一组 Rust 宏,帮助将文本转换为终端打印的彩色文本

6 个版本 (3 个重大变更)

0.8.0 2024 年 5 月 16 日
0.7.1 2024 年 2 月 26 日
0.6.4 2024 年 2 月 19 日
0.5.1 2024 年 2 月 16 日

命令行界面 中排名第 282

MIT 许可证

11KB
70

crates.io docs.rs

colorize

一组 Rust 宏,帮助将文本转换为终端打印的彩色文本。

目的

当我使用另一个命令行工具时,我想更容易地将普通文本转换为 ANSI 颜色格式文本,所以我编写了一系列宏来帮助格式化和/或打印,这些宏可以重用。

添加

您可以通过使用 cargo 或将 colorize-macros 添加到依赖项中来将宏添加到您的项目中。

cargo add colorize-macros
[dependencies]
colorize-macros = "^0.8"

使用方法

use colorize::{print_color, colorize};

// println "Hello world" in bold green
print_color!("{}", Fgb->"Hello world");

// Returns "Hello" in italic blue and "World" underlined in magenta
let color_string = colorize!("{} {}", iFb->"Hello", Fmu->"World");
assert_eq!(
    String::from("\x1b[3;34mHello\x1b[0m \x1b[4;35mWorld\x1b[0m"), 
    color_string
);

// Add a format token to multiple inputs using `=>`
// The below example will produce "Hello" with a green foreground, 
// "world" with a blue background, both in bold. 
let color_string = colorize!("{}, {}", b => Fg->"Hello", Bb->"world");
assert_eq!(
    String::from("\x1b[1;32mHello\x1b[0m \x1b[1;44mworld\x1b[0m"),
    color_string
);

use std::path::PathBuf;

let user_path = PathBuf::from("/home/color/my_new_file.txt");
let pretty_path = colorize!("{:?}", Fgu->user_path.clone());

assert_eq!(
    String::from("\x1b[32;4m\"/home/color/my_new_file.txt\"\x1b[0m"),
    pretty_path
);

print_color!("{} {} {:?}"b => "Moving", Fy->user_path, "to", Fg->PathBuf::from("/home/new_color_dir/my_second_file.txt"));

有关更多样式规范,请参阅 colorize 宏 文档。

开发

  • 添加背景颜色
  • 添加格式化多个具有相同输入的参数的能力(例如 colorize!("{}, {}", b => "Hello", Fg-> "world"),其中 "Hello" 和 "world" 都加粗,但只有 "world" 是绿色的)
  • log 包集成颜色日志宏

特别感谢

此包最初受到了 prettytable 中的 row 宏的启发。

依赖项

~275–730KB
~17K SLoC