1 个不稳定版本
0.1.7 | 2023年1月18日 |
---|
#699 在 命令行界面
190KB
4K SLoC
Ansirs(像答案一样?)
一个简单且可能存在缺陷的小型库,使得在 Rust 中使用 ANSI 颜色代码变得非常简单。
我经常制作很多糟糕的小型终端应用程序,并且厌倦了在谷歌上搜索 ANSI 颜色代码,或者安装一些庞大或难以管理的软件包来处理它们,因此我决定制作自己的愚蠢且/或难以管理的软件包!
使用方法尽可能简单,因为我相当笨,并希望对未来的自己来说尽可能容易。
use ansirs::{Ansi, Colors, IntoAnsi, style_text};
let header_style = Ansi::new()
.fg((25, 50, 250)) // Set foreground color to (25, 50, 250)
.bg((255, 255, 255)) // Set background to white.
.bold() // Set (toggle) bolded text.
.underline(); // Set (toggle) underlined text.
let body_style = Ansi::new()
.fg((50, 200, 50))
.bg((255, 255, 255));
let mistake_style = Ansi::new()
.fg((200, 25, 25))
.bg(Colors::White) // Most named html colors can be used from Colors
.strike() // Set (toggle) strike-through.
.italic(); // Set (toggle) italic text.
// Output can be saved (it is just a String)
let header = style_text("Ansirs Crate", header_style);
println!("{}", header);
// Or you can use style_text directly in println.
println!("{}", style_text("Simple and probably flawed library for dealing with ANSI color codes in rust!", body_style));
// You can also use the Ansi directly, but must remember to reset the style afterwards.
println!("{}Definitely an awesome crate.{}", mistake_style, Ansi::reset());
println!("{}", body_style.paint_text("Theres also a number of convenience functions available."));
ansirs::styled_print("Like these!", mistake_style);
style_text
还可以接受一个 lambda 表达式来动态生成样式。Lambda 表达式应该匹配以下函数签名 Fn() -> Ansi
// Same output as above, but without the locals variables. Keep in mind this makes reusing styles more difficult.
use ansirs::{Ansi, IntoAnsi, style_text};
println!("{}", style_text("Ansirs Crate", || Ansi::new()
.fg((25, 50, 250))
.bg((255, 255, 255))
.bold()
.underline()));
println!("{}", style_text("Simple and probably flawed library for dealing with ANSI color codes in rust!", || Ansi::new()
.fg((50, 200, 50))
.bg((255, 255, 255))));
println!("{}", style_text("Definitely an awesome crate.", Ansi::new()
.fg((200, 25, 25))
.bg((255, 255, 255))
.strike()
.italic()));
主要类型
ansirs::Ansi
- 主要结构,用于存储样式和格式化信息ansirs::Color
- 简单的颜色类,表示为(u8, u8, u8)
ansirs::Colors
- 命名(HTML)颜色,可以转换为Color
以及Ansi
ansirs::PrettyString
- 即将推出 一种可交换类型,可以存储文本以及格式
以下信息适用于库开发,具体请参阅函数文档。
待办事项
- 使示例
all_colors_256
中的使用更简便 - 添加
覆盖率、lint 以及可能的项目 gh actions- 自从Rust 1.60(稳定版)稳定了基于LLVM的覆盖率工具之后,现在覆盖率检查变得非常简单。目前我正在使用
cargo-llvm-cov
包,可以通过运行以下命令生成lcov格式的覆盖率报告:cargo llvm-cov --all-features --workspace --lcov --output-path cov/lcov.info
,并可以使用Coverage Gutters vscode插件(ryanluker.vscode-coverage-gutters
)来显示,或者使用以下命令生成HTML报告:cargo llvm-cov --html
- 自从Rust 1.60(稳定版)稳定了基于LLVM的覆盖率工具之后,现在覆盖率检查变得非常简单。目前我正在使用
- 找出这个包中存在的所有错误。
- 扩展测试
- 扩展功能?
-
Styled
特性用于指定某些类型的默认样式。我考虑的是类似于 std::fmt 函数家族的方式,即编写一个用户定义的“构建器”类型函数,该函数可以访问实例和一些默认样式。 - 此外,也许还可以将其扩展到“主题”。
依赖项
~1.5–7MB
~35K SLoC