14 个版本 (4 个破坏性更新)
0.6.9 | 2023 年 10 月 22 日 |
---|---|
0.6.7 | 2023 年 9 月 12 日 |
#173 在 命令行界面
每月 13,889 次下载
用于 12 个包 (5 个直接)
5MB
1K SLoC
r3bl_ansi_color 包
它做什么?
r3bl_ansi_color 包用于生成格式化的 ANSI 256 (8位) 和真彩色 (24位) 颜色输出到 stdout。在 macOS 上,默认的 Terminal.app 不支持真彩色,因此使用 ANSI 256 颜色。
此包通过启发式方法自行检测终端颜色功能。并且不使用其他包来执行此功能。
以下是各种操作系统上运行 main
示例的截图
在 Linux Tilix 上运行 |
在 Windows Terminal 上运行 |
在 macOS Terminal 应用程序上运行(注意 ANSI 256 运行时检测) |
在 macOS iTerm 应用程序上运行(注意真彩色运行时检测) |
如何使用它?
我们需要考虑的主要结构是 AnsiStyledText
。它有两个字段
text
- 要打印的文本。style
- 应用到文本的样式列表。
以下是一个示例。
AnsiStyledText {
text: "Print a formatted (bold, italic, underline) string w/ ANSI color codes.",
style: &[
Style::Bold,
Style::Italic,
Style::Underline,
Style::Foreground(Color::Rgb(50, 50, 50)),
Style::Background(Color::Rgb(100, 200, 1)),
],
}
.println();
请查看 main
示例 以更好地了解如何使用此包。
构建、运行、测试任务
先决条件
🌠 要使这些功能正常工作,您必须安装 Rust 工具链以及以下包 cargo-cache
、cargo-watch
、flamegraph
和 nu
,并按照以下说明进行操作
- 使用
rustup
安装 Rust 工具链,请按照以下说明进行操作 此处。 - 使用
cargo install cargo-cache
安装cargo-cache
。 - 使用
cargo install cargo-watch
安装cargo-watch
。 - 使用以下命令安装
flamegraph
:cargo install flamegraph
。 - 使用以下命令安装
nu
:cargo install nu
。
要运行的命令
要运行的脚本为 run.nu
。它适用于 Linux、macOS 和 Windows。请确保已安装所有 先决条件。
- 构建:
nu run.nu build
- 清理:
nu run.nu clean
- 运行示例:
nu run.nu run
- 使用发布标志运行示例:
nu run.nu run-release
- 使用火焰图分析运行示例:
nu run.nu run-flamegraph
- 运行测试:
nu run.nu test
- 运行 clippy:
nu run.nu clippy
- 构建文档:
nu run.nu docs
- 提供文档服务:
nu run.nu serve-docs
。这仅在您通过 VSCode (在您构建和提供文档的远程机器上) SSH 连接到远程机器,并希望在本地机器上的浏览器中查看文档时有用。 - 升级依赖项:
nu run.nu upgrade-deps
- 运行 rustfmt:
nu run.nu rustfmt
以下命令将监视源文件夹中的更改并重新运行
- 监视运行:
nu run.nu watch-run
- 监视所有测试:
nu run.nu watch-all-tests
- 监视单个测试:
nu run.nu watch-one-test <test_name>
- 监视 clippy:
nu run.nu watch-clippy
- 监视单个测试的宏展开:
nu run.nu watch-macro-expansion-one-test <test_name>
参考
- https://notes.burke.libbey.me/ansi-escape-codes/
- https://en.wikipedia.org/wiki/ANSI_escape_code
- https://www.asciitable.com/
- https://commons.wikimedia.org/wiki/File:Xterm_256color_chart.svg
- https://www.ditig.com/256-colors-cheat-sheet
- https://stackoverflow.com/questions/4842424/list-of-ansi-color-escape-sequences
- https://www.compuphase.com/cmetric.htm
为什么为此创建新的包?
- crates.io 上有一些类似功能的crate,但它们的许可证不可接受。
- 其他crate只是忽略了ANSI 256色,并且只支持truecolor,即使它们声称支持。
- 还有其他crate没有正确报告macOS Terminal.app不支持truecolor,仅支持ANSI 256色。
以下是一些链接
- https://github.com/rust-cli/concolor/issues/47
- https://docs.rs/anstream/latest/anstream/
- https://docs.rs/colorchoice/latest/colorchoice/
- https://docs.rs/colorchoice-clap/latest/colorchoice_clap/
- https://docs.rs/anstyle-query/latest/anstyle_query/fn.term_supports_ansi_color.html
- https://crates.io/crates/anstyle-query
- https://docs.rs/supports-color/2.0.0/supports_color/
- https://crates.io/crates/r3bl_ansi_color (在
ansi_color
文件夹中的源代码是这个crate) - https://crates.io/crates/colored