mirror of
https://git.proxmox.com/git/rustc
synced 2025-08-18 01:40:46 +00:00
68 lines
1.9 KiB
Rust
68 lines
1.9 KiB
Rust
//! This example demonstrates the flexibility of [`papergrid`] with manual configurations
|
|
//! of [`Borders`], [`CompactConfig`], and column counts with [`IterRecords`].
|
|
//!
|
|
//! * For an alternative to [`CompactGrid`] and [`CompactGridDimension`] with
|
|
//! flexible row height, variable intra-column spans, and multiline cell support
|
|
//! see [`Grid`] and [`SpannedGridDimension`].
|
|
|
|
use papergrid::{
|
|
config::compact::CompactConfig,
|
|
config::{AlignmentHorizontal, Borders, Indent, Sides},
|
|
dimension::compact::CompactGridDimension,
|
|
dimension::Estimate,
|
|
grid::compact::CompactGrid,
|
|
records::IterRecords,
|
|
};
|
|
|
|
fn main() {
|
|
let cfg = generate_table_config();
|
|
|
|
let data = [
|
|
["Papergrid", "is a library", "for printing tables", "!"],
|
|
[
|
|
"Just like this",
|
|
"NOTICE",
|
|
"that multiline is not supported",
|
|
"H\ne\nl\nl\no",
|
|
],
|
|
];
|
|
let records = IterRecords::new(data, 4, None);
|
|
|
|
let mut dim = CompactGridDimension::default();
|
|
dim.estimate(records, &cfg);
|
|
|
|
let grid = CompactGrid::new(records, &dim, &cfg);
|
|
|
|
println!("{grid}");
|
|
}
|
|
|
|
fn generate_table_config() -> CompactConfig {
|
|
const STYLE: Borders<char> = 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('+'),
|
|
};
|
|
|
|
CompactConfig::default()
|
|
.set_borders(STYLE)
|
|
.set_alignment_horizontal(AlignmentHorizontal::Center)
|
|
.set_padding(Sides::new(
|
|
Indent::spaced(1),
|
|
Indent::spaced(1),
|
|
Indent::spaced(0),
|
|
Indent::spaced(0),
|
|
))
|
|
}
|