#grid #string #layout #width #data #cells #space

uutils_term_grid

字符串布局库。term_grid 的分支。

4 个版本 (破坏性更新)

0.6.0 2024 年 2 月 21 日
0.5.0 2024 年 2 月 20 日
0.4.0 2024 年 2 月 9 日
0.3.0 2023 年 10 月 9 日

#206 in 命令行界面

Download history 5678/week @ 2024-04-16 7003/week @ 2024-04-23 8810/week @ 2024-04-30 5765/week @ 2024-05-07 5531/week @ 2024-05-14 5335/week @ 2024-05-21 3529/week @ 2024-05-28 4318/week @ 2024-06-04 4016/week @ 2024-06-11 4774/week @ 2024-06-18 6166/week @ 2024-06-25 6053/week @ 2024-07-02 4338/week @ 2024-07-09 4765/week @ 2024-07-16 6105/week @ 2024-07-23 4327/week @ 2024-07-30

20,219 每月下载量
用于 5 个 Crates (2 直接)

MIT 许可证

17KB
210

Crates.io dependency status CodeCov

uutils-term-grid

此库使用算法将文本数据排列成网格格式,适用于固定宽度字体,以最小化所需的空间。


此库是从未维护的 rust-term-grid 库分支出来的。核心功能保持不变,添加了一些错误修复、性能改进和一个新的 API。


安装

此 crate 与 cargo 一起工作。将以下内容添加到您的 Cargo.toml 依赖关系部分

[dependencies]
uutils_term_grid = "0.4"

最低支持的 Rust 版本为 1.70。

创建网格

要将数据添加到网格中,首先使用字符串列表和一组选项创建一个新的 Grid 值。

GridOptions 值中必须指定三个选项,这些选项决定了网格的格式

  • filling:在两列之间放置的内容——可以是空格数或文本字符串;
  • direction:指定单元格应沿行还是列移动
    • Direction::LeftToRight 从左上角开始,向右移动,在达到最后一列后转到新的一行;
    • Direction::TopToBottom 从左上角开始,向下移动,到达最后一行后,将移动到新列的顶部。
  • width:填充网格的宽度。通常,这应该是终端的宽度。

实际上,创建网格可以按以下步骤进行

use term_grid::{Grid, GridOptions, Direction, Filling};

// Create a `Vec` of text to put in the grid
let cells = vec![
    "one", "two", "three", "four", "five", "six",
    "seven", "eight", "nine", "ten", "eleven", "twelve"
];

// Then create a `Grid` with those cells.
// The grid requires several options:
//  - The filling determines the string used as separator
//    between the columns.
//  - The direction specifies whether the layout should
//    be done row-wise or column-wise.
//  - The width is the maximum width that the grid might
//    have.
let grid = Grid::new(
    cells,
    GridOptions {
        filling: Filling::Spaces(1),
        direction: Direction::LeftToRight,
        width: 24,
    }
);

// A `Grid` implements `Display` and can be printed directly.
println!("{grid}");

生成以下表格结果

one  two three  four
five six seven  eight
nine ten eleven twelve

网格单元格的宽度

此库使用textwrap库(使用display_width函数)来计算终端中字符串的宽度。这考虑了字符的宽度,并忽略了ANSI代码。

当前宽度计算不可配置。如果您有计算错误的用例,请提交一个问题。

依赖项

~380KB