#grid #string #font #cells #formatting #layout #space

term_grid

用于将字符串格式化为网格布局的库

9个版本

使用旧Rust 2015

0.2.0 2020年4月26日
0.1.7 2018年3月10日
0.1.6 2017年8月12日
0.1.5 2016年10月5日
0.1.1 2015年6月28日

#718Rust模式

Download history 1858/week @ 2024-03-14 2987/week @ 2024-03-21 2437/week @ 2024-03-28 1789/week @ 2024-04-04 1929/week @ 2024-04-11 1944/week @ 2024-04-18 1837/week @ 2024-04-25 1868/week @ 2024-05-02 1640/week @ 2024-05-09 1676/week @ 2024-05-16 1678/week @ 2024-05-23 1517/week @ 2024-05-30 1604/week @ 2024-06-06 2019/week @ 2024-06-13 1907/week @ 2024-06-20 1497/week @ 2024-06-27

7,249 每月下载量
15 包使用(其中13个直接使用)

MIT 许可证

27KB
443

rust-term-grid 构建状态

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

查看Rustdoc

安装

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

[dependencies]
term_grid = "0.2"

此crate测试的Rust最早版本是Rust v1.31.0

用法

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

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

let mut grid = Grid::new(GridOptions {
    filling:     Filling::Spaces(1),
    direction:   Direction::LeftToRight,
});

for s in &["one", "two", "three", "four", "five", "six", "seven",
           "eight", "nine", "ten", "eleven", "twelve"]
{
    grid.add(Cell::from(*s));
}

println!("{}", grid.fit_into_width(24).unwrap());

生成以下表格结果

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

创建网格

要将数据添加到网格中,首先创建一个新的Grid值,然后使用add方法将单元格添加到其中。

GridOptions值中必须指定两个选项,以决定网格的格式化方式

  • filling:在两列之间放置什么 - 要么是空格的数量,要么是文本字符串;
  • direction,指定单元格应沿行还是列排列
    • Direction::LeftToRight从左上角开始,向右移动,在到达最后一列后转到新行的开始;
    • Direction::TopToBottom 从左上角开始,向下移动,到达最后一行后移动到新列的顶部。

显示网格

在显示网格时,你可以事先指定列数,或者尝试在一个给定宽度的区域内找到可以容纳的最大列数。

将一系列单元格拆分为列(或者说,每n个单元格开始新的一行)可以通过在Grid值上使用fit_into_columns方法来实现。它接受列数作为参数。

尽可能将尽可能多的数据放入一个屏幕上是通过指定最大宽度来实现的。这是通过fit_into_width方法实现的。它接受包括分隔符在内的最大允许宽度作为参数。然而,它返回一个可选的 Display值,这取决于是否有任何单元格的实际宽度大于最大宽度!如果是这种情况,最好的办法是每行输出一个单元格。

单元格和数据

网格不接受String&str——它们接受Cells

单元格是一个结构体,包含单个单元格的内容,作为一个字符串,以及其预计算的长度,该长度在计算网格最终维度时被使用。通常,你希望使用字符串的Unicode宽度,因此你可以使用.into()方法将String转换为Cell

但是,你也可能想要提供自己的宽度:当你已经知道宽度时,或者当你想更改测量,例如跳过终止控制字符时。对于这些情况,Cell值的字段是公共的,这意味着你可以根据需要构造自己的实例。

依赖项

~370KB