5个版本

0.0.5 2021年5月6日
0.0.4 2021年3月24日
0.0.3 2021年3月14日
0.0.2 2021年3月13日
0.0.1 2021年2月28日

#300 in 调试

GPL-3.0-or-later

61KB
1.5K SLoC

Table-Format

github crates.io last commit ci status

格式化表格,用于打印到终端或包含在日志中。提供简洁的语法用于简单用例,以及高级选项以满足更复杂的需要。

文档

请在此处查看完整文档: Table-Format 文档

它做什么?

Table-format 是一个用 Rust 编程语言编写的库,它帮助将数据格式化为文本表格。它允许独立控制标题和主体元素的风格,并包括一些更高级的用例,例如行标题(水平放置的标题)、部分行支持(数据源不包含足够值以形成完整的最后一行的情况),以及单元格样式选项,包括多行、每行格式化,以用于更复杂的可视化用例。

为什么是这个库而不是其他库?

我建立这个库是为了解决我在编程之旅中经常遇到的一个特定的格式化问题;一种在终端中打印和可视化数据结构的方法。那里有许多其他非常好的表格格式化程序。它们都不符合我的特定需求,所以我构建了自己的。我希望它可能对其他人也有用。

简单表格

使用 table! 宏创建一个简单的表格,描述标题列,并提供一个数据数组的数组或一个用于主体的向量。

println!("{}",
    table!(
        "{^:10:}" => "Food", "{^:10:}" => "Count";
        "Fish", "15", "Pizza", "10", "Steak", "6"
    ).format()
);
+---------------------+
|   Food   |  Count   |
+---------------------+
|Fish      |15        |
+---------------------+
|Pizza     |10        |
+---------------------+
|Steak     |6         |
+---------------------+

自定义边框

自定义边框

┌──────────┬────────────────────┐
│  Custom  │      Borders       │
├──────────┼────────────────────┤
│are       │super fun           │
├──────────┼────────────────────┤
│and       │super awesome       │
└──────────┴────────────────────┘

颜色

[包含颜色的图片]

对齐

[显示多种不同对齐方式的表格]

换行

[换行文本与截断文本]

多行单元格

[包含多行文本单元格的表格]

每行格式化

[多行格式化示例]

迭代器数据源

[展示使用迭代器数据源的代码]

使用高级格式化选项创建高度定制的表格输出。

变更日志 & 路线图

查看变更日志路线图以获取详细信息。

内容样式

可以使用样式指令或手动构建的ContentStyle结构来设置表格单元格的内容样式。内容样式包括以下元素:

  • 对齐方式(左对齐、居中对齐、右对齐)
  • 颜色(前景色、背景色)
  • 宽度(固定宽度、最小宽度、内容宽度)
  • 换行(换行或截断)

样式指令

指定内容样式的一种简写方法是使用样式指令。这些格式字符串的指定方式如下:

{alignment|color|width|wrap}

对齐

对齐方式使用以下之一指定:< ^ >

* <   - *(default)* left aligned
* ^   - center aligned
* \>  - right aligned

颜色

颜色指定在方括号[]内,包括:

  • 单个颜色代码,仅指定前景色。
  • 两个颜色代码,指定前景色和背景色。
  • 单个颜色代码后跟一个-,仅指定背景色。

小写颜色代码表示常规(深色)颜色。大写代码表示亮色。

示例颜色代码

c   - Cyan on black  (foreground color specified only)
rG  - Dark red on bright breen
Wb  - Bright white on dark blue
-g  - White on dark green  (background color specified only)

宽度

当描述标题时使用单元格的宽度。表格标题行中的单元格描述了这些标题的宽度,并用于确定表格的列断点和内容应如何换行或截断。

宽度在双竖线||之间指定。

可以指定三种宽度规则:

  • 固定宽度 - 内容将被换行或截断以适应宽度。
  • 最小宽度 - 总是保持最小宽度,但其他方面会扩展以适应。
  • 内容 - 列的大小基于内容的大小。

示例宽度指定器

:15:  - Fixed width of 15 chars
|10|  - Minimum width of 10 chars
@     - (default) Sized according to content

换行

当内容太大无法适应单元格时,它将被换行到多行或截断。换行模式指定器指定是否换行或截断。此指定器是样式指令末尾的单个字符。

换行通过在指令末尾包括分号;来指示。截断(默认)不需要指定符。

将内容换行的样式指令示例

{<c;}  - Left-aligned, cyan, wrapped

所有字段都是可选的

样式指令的四个部分都是可选的。空的样式指令{}仅意味着“左对齐,白色背景,内容宽度,截断”。不需要包含空样式指令。

部分指令的示例

{>;}    - Right-aligned, white on black, content width, wrapped
{-g}  - Left-aligned, white on dark green, content width, truncated
{;}     - Left-aligned, white on black, content width, wrapped
{:15:}  - Left-aligned, white on black, fixed 15 char width, truncated

示例

示例 1:左对齐,青色背景,固定15字符宽度,截断

{<[c]:15:}

示例 2:居中对齐,亮黄色背景,内容宽度,换行内容

{^[Yg]@;}

注意:上方的@是可选的,可以省略。

依赖关系

~0–10MB
~56K SLoC