8 个版本

0.4.0 2024 年 4 月 20 日
0.3.0 2022 年 10 月 19 日
0.2.1 2022 年 8 月 18 日
0.1.1 2022 年 8 月 13 日

#325解析器实现

Download history 182/week @ 2024-04-19 8/week @ 2024-04-26

484 每月下载量
用于 tui-markup-ansi-macro

BSD-3-Clause-Clear

67KB
1.5K SLoC

tui markup

crates.io changelog docs.rs deps state

此软件包提供了一种标记语言,可以快速在纯文本中编写彩色和具有样式的终端文本。

使用方法

use ansi_term::{ANSIStrings, Color, Style};
use tui_markup::{compile, compile_with, generator::ANSIStringsGenerator};

// Parse markup into some final result for showing
let result = compile::<ANSIStringsGenerator>("You got a <yellow Coin>").unwrap();
// Show it
println!("{}", ANSIStrings(&result));

// With custom tag
let gen = ANSIStringsGenerator::new(|tag: &str| match tag {
    "keyboard" => Some(Style::default().fg(Color::Blue).on(Color::Black).bold()),
    _ => None,
});
let result = compile_with("Press <keyboard Space> to jump", gen).unwrap();
println!("{}", ANSIStrings(&result));

结果

result of example

注意结果类型以及如何显示取决于您使用的 Generator

当前可用的 内置生成器

  • ansi: ANSIStringsGenerator,用于在任何 ASNI 兼容的终端中直接打印结果。
  • ratatui: RatatuiTextGenerator,用于创建 Text 结构的 ratatui 软件包以显示结果。
  • crossterm: CrosstermCommandsGenerator,用于创建一系列 crossterm 软件包的命令以打印结果。

还有一个宏(tui-markup-ansi-macro 软件包),在编译时将标记源编译成 ANSI 序列,如果需要,请查看它。

您可以通过创建自己的生成器轻松地为其他终端/库/应用程序添加此标记支持。

示例

help text

以下命令在 Windows Terminal 中显示示例

cargorun --exampleratatui --功能ratatui,crossterm --examples/help.txt

本文的源标记文本可以在 examples/help.txt 中找到。

您可以将最后一个参数更改为您的文件以渲染其他文章,例如 examples/indexed.txt 以显示完整的 xterm256 颜色图表

color chart

这两个截图都使用了内置的 ratatui 生成器。

标记语法

仅有一种语法 <taglist content> 用于向内容添加样式。

taglist 是一个由 , 分隔的 tag 列表。

tag 的格式为 mode:value,可用的 mode

  • fg: 用于前景色。
  • bg: 用于背景色。
  • mod: 用于修饰符。

模式及 : 是可选的,除了 bg:,因此 66ccff = fg:66ccf,以及 b = mod:b

一些示例

  • <green text> 用于绿色文本,<66ccff text> 用于 #66ccff 颜色文本。
  • <bg:blue text> 用于蓝色背景文本,<bg:66ccff text> 用于 #66ccff 背景文本。
  • <b text> 用于粗体文本,<i text> 用于斜体/倾斜文本。
  • <bg:blue one<green two>>,是一个蓝色背景的“one”,后接一个蓝色背景和绿色前景的“two”。
  • <bg:blue,green,b,i text> 是一个蓝色背景、绿色前景、粗体、斜体文本。

您还可以定义自己的标签,如上面的示例代码。

正式语法规范可以在 docs/syntax.ebnf 中找到。

颜色和修饰符支持因所使用的生成器而异,请参阅它们的文档以获取详细信息。

待办事项

  • termion 生成器
  • ncurses 生成器

许可证

BSD-3-Clause-Clear,见 LICENSE

依赖项

~1–8MB
~43K SLoC