3 个版本

0.1.2 2020年5月31日
0.1.1 2020年4月19日
0.1.0 2020年4月1日

#438 in 命令行界面

Download history 34049/week @ 2024-03-26 34833/week @ 2024-04-02 31184/week @ 2024-04-09 32678/week @ 2024-04-16 32982/week @ 2024-04-23 31088/week @ 2024-04-30 30303/week @ 2024-05-07 30217/week @ 2024-05-14 31285/week @ 2024-05-21 31516/week @ 2024-05-28 34530/week @ 2024-06-04 30541/week @ 2024-06-11 29240/week @ 2024-06-18 29851/week @ 2024-06-25 28677/week @ 2024-07-02 25281/week @ 2024-07-09

118,267 个月下载量
用于 69 个 Crates(直接使用 2 个)

MIT 许可证

45KB
563 代码行

yansi-term 最新版本 构建状态

改编自 rust-ansi-term

重构以使用 fmt::DisplayFnOnce(&mut fmt::Formatter) -> fmt::Result

这是一个控制颜色和格式的库,例如红色粗体文本或蓝色下划线文本。

查看 Rustdoc

安装

这个 crate 与 Cargo 一起工作。将以下内容添加到您的 Cargo.toml 依赖项部分

[dependencies]
yansi-term = "0.1"

基本用法

在这个 crate 中,您需要关注两个主要类型:StyleColour

Style 包含样式信息:前景色和背景色,文本是否应该加粗、闪烁或其他属性。The Colour 枚举表示可用的颜色。

Color 也可以作为 Colour 的别名。

要格式化字符串,请调用 StyleColour 上的 paint 方法,传入要格式化的字符串作为参数。例如,下面是如何获取一些红色文本

use yansi_term::Colour::Red;

println!("This is in red: {}", Red.paint("a red string"));

Windows 10 用户注意:在 Windows 10 上,应用程序必须首先启用 ANSI 支持

let enabled = yansi_term::enable_ansi_support();

粗体、下划线、背景和其他样式

对于比纯前景颜色改变更复杂的情况,您需要构建Style值本身,而不是从Colour开始。您可以通过使用Style的新实例创建的方法链来实现,该实例使用Style::new()创建。每个方法创建一个新的样式,该样式具有特定的属性集。例如

use yansi_term::Style;

println!("How about some {} and {}?",
         Style::new().bold().paint("bold"),
         Style::new().underline().paint("underline"));

为了简洁,这些方法也针对Colour值进行了实现,因此您可以在不开始于空的Style值的情况下为您的样式指定前景颜色

use yansi_term::Colour::{Blue, Yellow};

println!("Demonstrating {} and {}!",
         Blue.bold().paint("blue bold"),
         Yellow.underline().paint("yellow underline"));

println!("Yellow on blue: {}", Yellow.on(Blue).paint("wow!"));

您可以使用的完整样式列表如下:bolddimmeditalicunderlineblinkreversehidden和用于背景颜色的on

在某些情况下,您可能发现更改现有Style的前景颜色比从适当的Colour开始更容易。您可以使用fg方法来完成此操作

use yansi_term::Style;
use yansi_term::Colour::{Blue, Cyan, Yellow};

println!("Yellow on blue: {}", Style::new().on(Blue).fg(Yellow).paint("yow!"));
println!("Also yellow on blue: {}", Cyan.on(Blue).fg(Yellow).paint("zow!"));

您可以使用normal方法将Colour转换为Style

use yansi_term::Style;
use yansi_term::Colour::Red;

Red.normal().paint("yet another red string");
Style::default().paint("a completely regular string");

扩展颜色

您可以通过使用Colour::Fixed变体来访问256种颜色的扩展范围,该变体接受要使用的颜色数字作为参数。这可以在您使用Colour的任何地方使用。

use yansi_term::Colour::Fixed;

Fixed(134).paint("A sort of light purple");
Fixed(221).on(Fixed(124)).paint("Mustard in the ketchup");

这些值的前16个与正常和加粗的标准颜色变体相同。您可以使用这些作为Fixed颜色,但这不会带来任何好处。

您还可以通过使用Colour::RGB变体来访问完整的24位颜色,该变体接受红色、绿色和蓝色的独立的u8参数

use yansi_term::Colour::RGB;

RGB(70, 130, 180).paint("Steel blue");

依赖关系

~0-350KB