#table #terminal #cli

term-data-table

用于在CLI应用程序中渲染数据的表格

6个版本

0.2.3 2022年7月10日
0.2.2 2022年7月10日
0.2.1 2022年6月30日
0.1.1 2022年6月29日

#487 in 命令行界面

MIT 许可证

98KB
1.5K SLoC

term-table

CLI表格制作简单化

示例

let mut table = Table::new();
table.max_column_width = 40;

table.style = TableStyle::extended(); 

table.add_row(Row::new(vec![
    TableCell::new_with_alignment("This is some centered text", 2, Alignment::Center)
])); 

table.add_row(Row::new(vec![
    TableCell::new("This is left aligned text", 1),
    TableCell::new_with_alignment("This is right aligned text", 1, Alignment::Right)
]));

table.add_row(Row::new(vec![
    TableCell::new("This is left aligned text", 1),
    TableCell::new_with_alignment("This is right aligned text", 1, Alignment::Right)
]));

table.add_row(Row::new(vec![
    TableCell::new("This is some really really really really really really really really really that is going to wrap to the next line", 2),
]));   

println!("{}", table.render());

这是结果

extended style

使用TableBuilder

let table = TableBuilder::new().style(TableStyle::extended()).rows(
        vec![
            Row::new(vec![
                TableCell::new_with_alignment("This is some centered text", 2, Alignment::Center)
            ]),
            Row::new(vec![
                TableCell::new("This is left aligned text"),
                TableCell::new_with_alignment("This is right aligned text", 1, Alignment::Right)
            ]),
            Row::new(vec![
                TableCell::new("This is left aligned text"),
                TableCell::new_with_alignment("This is right aligned text", 1, Alignment::Right)
            ]),
                Row::new(vec![
                TableCell::new_with_col_span("This is some really really really really really really really really really that is going to wrap to the next line", 2),
            ]),
        ]
    ).build();

println!("{}", table.render());

表格样式

可以通过创建一个新的 TableStyle 实例来自定义表格样式

这是扩展表格样式实现的样子。这是term-table-rs中的默认样式

pub fn extended() -> TableStyle {
    return TableStyle {
        top_left_corner: '',
        top_right_corner: '',
        bottom_left_corner: '',
        bottom_right_corner: '',
        outer_left_vertical: '',
        outer_right_vertical: '',
        outer_bottom_horizontal: '',
        outer_top_horizontal: '',
        intersection: '',
        vertical: '',
        horizontal: '',
    };
}

TableStyle 还实现了 simple() 表格样式函数和 blank() 表格样式函数

这些样式看起来是这样的

空白

blank style

简单

simple style

列宽

可以控制表格列的最大宽度。可以将 Tablemax_column_width 属性设置为限制所有表格单元格的宽度。可以使用 Tableset_max_column_width 函数设置特定列的最大宽度。通过传递包含索引和宽度的元组的 Vecset_max_column_widths 函数提供设置多列宽度的能力。

禁用行分隔符

有几种不同的选项可以禁用行分隔。

Table 有三个标志用于控制行分隔

  1. separate_rows 指定是否在表格内分隔行

    separate_rows

  2. has_top_boarder 指定表格是否有顶部边框

    has_top_boarder

  3. has_bottom_boarder 指定表格是否有底部边框

    has_bottom_boarder

还可以通过在 Row 上设置 has_separator 标志来按行控制分隔符

has_separator

依赖项

~4.5–6.5MB
~117K SLoC