| //! This example demonstrates using the [`Format`] [`CellOption`] factory to alter |
| //! the cells of a [`Table`]. |
| //! |
| //! * Note how [`Format::content()`] gives access to the respective cell content for replacement. |
| //! And [`Format::positioned()`] additionally provides the index coordinates of that cell. |
| //! |
| //! * Note how the [std] [`format!`] macro is used to update the values of the affected cells. |
| |
| use tabled::{ |
| settings::{ |
| object::{Columns, Object, Rows}, |
| Format, Modify, Style, |
| }, |
| Table, Tabled, |
| }; |
| |
| #[derive(Tabled)] |
| struct Commit { |
| id: &'static str, |
| header: &'static str, |
| message: &'static str, |
| } |
| |
| fn main() { |
| let data = [ |
| Commit { |
| header: "bypass open-source transmitter", |
| message: "index neural panel", |
| id: "8ae4e8957caeaa467acbce963701e227af00a1c7", |
| }, |
| Commit { |
| header: "program online alarm", |
| message: "copy bluetooth card", |
| id: "48c76de71bd685486d97dc8f4f05aa6fcc0c3f86", |
| }, |
| Commit { |
| header: "CSV", |
| message: "reboot mobile capacitor", |
| id: "6ffc2a2796229fc7bf59471ad907f58b897005d0", |
| }, |
| ]; |
| |
| let table = Table::new(data) |
| .with(Style::psql()) |
| .with( |
| Modify::new(Rows::first()) |
| .with(Format::positioned(|_, (_, column)| column.to_string())), |
| ) |
| .with( |
| Modify::new(Columns::first().not(Rows::first())) |
| .with(Format::content(|s| format!("{s}..."))), |
| ) |
| .to_string(); |
| |
| println!("{table}"); |
| } |