#table #grid #print #indent #records #spanned #tabled

no-std papergrid

Papergrid 是一个用于打印表格的核心库

36 个版本

0.12.0 2024 年 8 月 5 日
0.11.0 2023 年 12 月 20 日
0.10.0 2023 年 7 月 24 日
0.7.1 2022 年 10 月 18 日
0.1.0 2020 年 3 月 23 日

#208命令行界面

Download history 67155/week @ 2024-04-26 64413/week @ 2024-05-03 75945/week @ 2024-05-10 71546/week @ 2024-05-17 67137/week @ 2024-05-24 77245/week @ 2024-05-31 71548/week @ 2024-06-07 74506/week @ 2024-06-14 81427/week @ 2024-06-21 69981/week @ 2024-06-28 66828/week @ 2024-07-05 66497/week @ 2024-07-12 72232/week @ 2024-07-19 70987/week @ 2024-07-26 68910/week @ 2024-08-02 64885/week @ 2024-08-09

289,802 每月下载量
320 个 Crates 中使用(通过 tabled

MIT 许可证

265KB
7K SLoC

papergrid

这是一个美观表格的库。

它具有相对底层的 API。如果您对更友好的 API 感兴趣,请查看 tabled

用法

use papergrid::{
    colors::NoColors,
    config::{
        spanned::SpannedConfig, AlignmentHorizontal, AlignmentVertical, Borders, Entity, Indent,
        Sides,
    },
    dimension::{spanned::SpannedGridDimension, Estimate},
    grid::peekable::PeekableGrid,
    records::vec_records::{CellInfo, VecRecords},
};

fn main() {
    let mut cfg = SpannedConfig::default();
    cfg.set_borders(Borders {
        top: Some('-'),
        top_left: Some('+'),
        top_right: Some('+'),
        top_intersection: Some('+'),
        bottom: Some('-'),
        bottom_left: Some('+'),
        bottom_right: Some('+'),
        bottom_intersection: Some('+'),
        horizontal: Some('-'),
        left_intersection: Some('+'),
        right_intersection: Some('+'),
        vertical: Some('|'),
        left: Some('|'),
        right: Some('|'),
        intersection: Some('+'),
    });
    cfg.set_column_span((1, 1), 3);
    cfg.set_row_span((0, 0), 2);
    cfg.set_alignment_horizontal((1, 0).into(), AlignmentHorizontal::Center);
    cfg.set_alignment_vertical(Entity::Global, AlignmentVertical::Center);
    cfg.set_padding(
        (0, 0).into(),
        Sides::new(
            Indent::spaced(4),
            Indent::spaced(4),
            Indent::spaced(1),
            Indent::spaced(1),
        ),
    );

    let data = [
        ["Papergrid", "is a library", "for print tables", "!"],
        ["", "Just like this", "", ""],
    ];

    let data = data
        .iter()
        .map(|row| row.iter().map(CellInfo::new).collect())
        .collect();

    let records = VecRecords::new(data);

    let mut dims = SpannedGridDimension::default();
    dims.estimate(&records, &cfg);

    let grid = PeekableGrid::new(&records, &cfg, &dims, NoColors).to_string();

    println!("{grid}");
}

运行示例您必须看到。

+-----------------+------------+----------------+-+
|                 |is a library|for print tables|!|
+    Papergrid    +------------+----------------+-+
|                 |Just like this                 |
+-----------------+------------+----------------+-+

依赖项

~510–740KB