3 个版本
0.1.2 | 2020年5月31日 |
---|---|
0.1.1 | 2020年4月19日 |
0.1.0 | 2020年4月1日 |
#438 in 命令行界面
118,267 个月下载量
用于 69 个 Crates(直接使用 2 个)
45KB
563 代码行
yansi-term
改编自
rust-ansi-term
重构以使用 fmt::Display
和 FnOnce(&mut fmt::Formatter) -> fmt::Result
这是一个控制颜色和格式的库,例如红色粗体文本或蓝色下划线文本。
查看 Rustdoc
安装
这个 crate 与 Cargo 一起工作。将以下内容添加到您的 Cargo.toml
依赖项部分
[dependencies]
yansi-term = "0.1"
基本用法
在这个 crate 中,您需要关注两个主要类型:Style
和 Colour
。
Style
包含样式信息:前景色和背景色,文本是否应该加粗、闪烁或其他属性。The Colour
枚举表示可用的颜色。
Color
也可以作为 Colour
的别名。
要格式化字符串,请调用 Style
或 Colour
上的 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!"));
您可以使用的完整样式列表如下:bold
、dimmed
、italic
、underline
、blink
、reverse
、hidden
和用于背景颜色的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