Crates.io | text-grid-macros |
lib.rs | text-grid-macros |
version | 0.4.1 |
source | src |
created_at | 2024-03-05 11:02:36.81894 |
updated_at | 2024-03-05 11:02:36.81894 |
description | A library to create formatted plain-text tables. |
homepage | |
repository | https://github.com/frozenlib/text-grid-rs |
max_upload_size | |
id | 1162964 |
size | 11,455 |
A library to create formatted plain-text tables.
use text_grid::*;
struct RowData {
a: String,
b: u32,
c: u32,
d: f64,
}
impl Cells for RowData {
fn fmt(f: &mut CellsFormatter<Self>) {
f.column("a", |s| &s.a);
f.column("b", |s| s.b);
f.column("c", |s| cell(s.c).left());
f.column_with("d", |f| {
f.column("x", |s| s.d);
f.column("y", |s| cells_f!("{:.2e}", s.d));
});
}
}
let rows = [
RowData { a: "ABC".to_string(), b: 300, c: 1, d: 100.1 },
RowData { a: "XY".to_string(), b: 2, c: 200, d: 1.234 },
];
let g = to_grid(rows);
assert_eq!(format!("\n{g}"), OUTPUT);
const OUTPUT: &str = r#"
a | b | c | d |
-----|-----|-----|--------------------|
| | | x | y |
-----|-----|-----|---------|----------|
ABC | 300 | 1 | 100.1 | 1.00 e 2 |
XY | 2 | 200 | 1.234 | 1.23 e 0 |
"#;
This project is dual licensed under Apache-2.0/MIT. See the two LICENSE-* files for details.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.