7 个版本

0.2.1 2023年4月23日
0.2.0 2023年4月23日
0.1.5 2023年4月17日
0.1.4 2023年3月21日
0.1.1 2023年2月1日

#422 in 命令行界面

MIT 协议

32KB
437

Rct   构建状态 最新版本 文档 codecov

为 Rust 🦀 项目提供 CLI 表格输出。

Basic table Color table

安装

从命令行添加。

cargo install rct

或将其添加到您的 Cargo.toml 文件中。

[dependencies]
rct = "0.2.1"

# Or add from github main branch.
rct = { git = "https://github.com/disco07/rct.git", branch = "main" }

用法

基本用法

fn main() {
    use rct::cell::ICell;
    use rct::table::Table;

    let mut table = Table::new();

    table
        .add_header(vec![
            "ID".cell(),
            "Title".cell(),
            "is_enabled".cell(),
            "price".cell(),
            "currency".cell(),
            "description".cell(),
            "created_at".cell(),
        ])
        .add_row(vec![
            1.cell(),
            "Harry \nPotter".cell(),
            "1".cell(),
            "14.87".cell(),
            "".cell(),
            "Harry Potter".cell(),
            "2001-12-05 22:05:20".cell(),
        ])
        .add_row(vec![
            2.cell(),
            "Spider-man".cell(),
            "0".cell(),
            "18.80".cell(),
            "".cell(),
            "Spider-man, No Way Home.".cell(),
            "2018-12-12 09:04:50".cell(),
        ])
        .add_row(vec![
            3.cell(),
            "Avenger".cell(),
            "1".cell(),
            "18.50".cell(),
            "".cell(),
            "Avenger".cell(),
            "2017-10-12 10:34:39".cell(),
        ]);

    table.view()
}

自定义表格(添加颜色)

use rct::cell::ICell;
use rct::styles::color::{Colorizer, Font};
use rct::table::Table;

fn main() {
    let mut table = Table::new();

    table
        .add_header(vec![
            "ID".cell(),
            "Title".cell(),
            "is_enabled".cell(),
            "price".cell(),
            "currency".cell(),
            "description".cell(),
            "created_at".cell(),
        ])
        .add_row(vec![
            1.cell(),
            "Harry \nPotter".cell().color("#ff0000"),
            "1".cell(),
            "14.87".cell(),
            "".cell(),
            "Harry Potter".cell(),
            "2001-12-05 22:05:20"
                .cell()
                .bg("#0000ff")
                .font(Font::Blinking),
        ])
        .add_row(vec![
            2.cell(),
            "Spider-man".cell().font(Font::Italic),
            "0".cell(),
            "18.80".cell().font(Font::Bold),
            "".cell(),
            "Spider-man, No Way Home.".cell().font(Font::Strikethrough),
            "2018-12-12 09:04:50".cell(),
        ])
        .add_row(vec![
            3.cell(),
            "Avenger".cell().color("#00ff00"),
            "1".cell(),
            "18.50".cell(),
            "".cell(),
            "Avenger".cell(),
            "2017-10-12 10:34:39".cell(),
        ]);

    table.view();
}

派生宏

#[derive(ToTable)] 也可以用于将结构体的 Vec 或切片打印为表格。

use rct::styles::color::{Colorizer, Font};
use rct::ToTable;

#[derive(ToTable)]
struct Movies<T, S> {
    #[table(rename = "ID", color = "#00ff00")]
    id: T,
    #[table(rename = "Title", bg = "#ff0000")]
    title: S,
    #[table(rename = "Price €", font = "Font::Bold")]
    price: f32,
}

fn main() {
    let movies = [
        Movies {
            id: 1,
            title: "Harry \nPotter".to_string(),
            price: 14.87,
        },
        Movies {
            id: 2,
            title: "Spider-man".to_string(),
            price: 18.80,
        },
    ];

    let table = movies.into_iter().to_table();

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

字段属性

  • rename: 用于重命名列。用法:#[table(rename = "Name")]
  • color: 用于指定列内容的颜色,以十六进制值表示。用法:#[table(color = "#00ff00")]
  • bg: 用于指定列内容的背景颜色,以十六进制值表示。用法:#[table(bg = "#ff0000")]
  • font: 用于给列添加样式,如加粗、斜体等。用法:#[table(font = "Font::Bold")]
  • 贡献 🤝

    欢迎贡献、问题和功能请求!

    请随意查看问题页面。

    📝 许可证

    License: MIT

    依赖

    ~2.6–4MB
    ~61K SLoC