0.1.6 |
|
---|---|
0.1.5 |
|
#4 in #tables
36KB
472 行
taalika:Rust中的纯文本表格
构建纯文本、自动对齐的表格。如果你正在实现 ls
,这基本上就是你要的。
示例
use taalika::{Table, Row};
use std::path::Path;
fn ls(dir: &Path) -> ::std::io::Result<()> {
let mut table = Table::new("{:>} {:<}{:<} {:<}");
for entry_result in ::std::fs::read_dir(dir)? {
let entry = entry_result?;
let metadata = entry.metadata()?;
table.add_row(Row::new()
.with_cell(metadata.len())
.with_cell(if metadata.permissions().readonly() {"r"} else {""})
.with_cell(if metadata.is_dir() {"d"} else {""})
.with_cell(entry.path().display()));
}
print!("{}", table);
Ok(())
}
ls(Path::new("target")).unwrap();
生成类似的内容
1198 target/.rustc_info.json
1120 d target/doc
192 d target/package
1056 d target/debug
其他特性
-
方法
Table::with_heading()
和Table::add_heading()
添加跨越所有列的行。 -
宏
row!
使用更少的语法构建具有固定列数的行。 -
方法
Table::set_line_end()
允许更改行结束符以包含回车(或您想要的任何内容)。 -
方法
Row::with_ansi_cell()
和Row::add_ansi_cell()
可以用来添加带有ANSI颜色代码的单元格,并且它们的宽度仍然会被正确计算。
用法
taalika
在 crates.io 上。
特性
-
特性
unicode-width
用于按Unicode图形字符计算列宽。它默认启用,并依赖于 unicode-width 包。注意,如果没有
unicode-width
,对齐将基于std::str::Chars
迭代器的计数。
此包支持Rust版本1.46.0及以后版本。
另请参阅
您可能还需要
-
tabular -
taalika
是此包的分支,增加了更多功能。 -
text-tables – 这比tabular更自动。您提供一个数组数组,它会渲染一个带有边框的漂亮表格。Tabular不处理边框。
-
prettytable — 这在构建表格方面与tabular的API更相似,但它做了更多的事情,包括颜色、边框和CSV导入。
依赖关系
~605KB