5 个版本

0.2.0 2022年1月8日
0.1.4 2019年12月30日
0.1.2 2018年9月19日

值格式化 类别中排名第 103

Download history 11420/week @ 2024-03-14 11175/week @ 2024-03-21 11230/week @ 2024-03-28 8247/week @ 2024-04-04 9677/week @ 2024-04-11 10810/week @ 2024-04-18 10100/week @ 2024-04-25 10923/week @ 2024-05-02 13718/week @ 2024-05-09 11064/week @ 2024-05-16 10007/week @ 2024-05-23 9803/week @ 2024-05-30 11546/week @ 2024-06-06 10853/week @ 2024-06-13 10000/week @ 2024-06-20 7953/week @ 2024-06-27

每月下载量 42,369
31 个 crate(其中29个直接)中使用

MIT/Apache

39KB
506

tabular:Rust 中的纯文本表格

Build Status Crates.io License: MIT License: Apache 2.0 Documentation (latest release) Documentation (main)

构建纯文本、自动对齐的表格。如果你正在实现 ls,这基本上是你想要的。

示例

use tabular::{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() 方法允许更改行结束符以包括回车(或你想要的任何内容)。

  • 启用 ansi-cell 功能后,可以使用 Row::with_ansi_cellRow::add_ansi_cell 方法添加具有 ANSI 颜色代码的单元格,同时仍然正确计算其宽度。

  • 可以使用 Row::with_custom_width_cellRow::add_custom_width_cell 方法精确地自定义对齐。

用法

它在 crates.io 上,所以你可以在 Cargo.toml 中添加

[dependencies]
tabular = "0.2.0"

特性

  • unicode-width:默认启用;依赖于 unicode-width crate。

    启用 unicode-width 特性后,默认对齐基于 [Unicode 标准附件 #11],其中 Ambiguous 类别的字符被认为有 1 列宽。

    如果没有它,默认对齐将基于 std::str::Chars 迭代器的计数。

  • ansi-cell:默认禁用;依赖于 strip-ansi-escapes 包。提供 with_ansi_celladd_ansi_cell 方法。

最低支持的 Rust 版本

此包的最低支持 Rust 版本 (MSRV) 为 Rust 1.46.0。MSRV 可能在补丁版本中提升。

另请参阅

您可能还需要

  • text-tables – 这比表格更自动化。您提供一个数组数组,它会渲染一个带边框的表格。表格不处理边框。

  • prettytable — 这在构建表格方面的 API 与表格更相似,但它做了更多的事情,包括颜色、边框和 CSV 导入。

依赖项

~300–405KB