| //! This example demonstrates using colors to stylize [`Grid`] borders. |
| //! Borders can be set globally with [`SpannedConfig::set_border_color_global()`] |
| //! or individually with [`SpannedConfig::set_border_color()`]. |
| //! |
| //! * 🚩 This example requires the `color` feature. |
| //! |
| //! * [`CompactConfig`] also supports colorization when the `color` feature is enabled. |
| |
| use papergrid::{ |
| ansi::ANSIBuf, |
| colors::NoColors, |
| config::spanned::SpannedConfig, |
| config::{AlignmentHorizontal, AlignmentVertical, Borders, Entity::Global, Indent, Sides}, |
| dimension::spanned::SpannedGridDimension, |
| dimension::Estimate, |
| grid::iterable::Grid, |
| records::IterRecords, |
| }; |
| |
| fn main() { |
| let cfg = generate_table_config(); |
| |
| let data = vec![ |
| vec!["Papergrid", "is a library", "for printing tables", "!"], |
| vec!["", "Just like this", "", ""], |
| ]; |
| let records = IterRecords::new(data, 4, Some(2)); |
| |
| let mut dim = SpannedGridDimension::default(); |
| dim.estimate(&records, &cfg); |
| |
| let grid = Grid::new(records, &dim, &cfg, NoColors).to_string(); |
| |
| println!("{grid}"); |
| } |
| |
| fn generate_table_config() -> SpannedConfig { |
| let style = 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('+'), |
| }; |
| |
| let mut cfg = SpannedConfig::default(); |
| cfg.set_borders(style); |
| cfg.set_column_span((1, 1), 3); |
| cfg.set_row_span((0, 0), 2); |
| cfg.set_alignment_horizontal((1, 0).into(), AlignmentHorizontal::Center); |
| cfg.set_alignment_vertical(Global, AlignmentVertical::Center); |
| cfg.set_padding( |
| (0, 0).into(), |
| Sides::new( |
| Indent::spaced(4), |
| Indent::spaced(4), |
| Indent::spaced(1), |
| Indent::spaced(1), |
| ), |
| ); |
| cfg.set_border_color_default(ANSIBuf::new("\u{1b}[42m", "\u{1b}[0m")); |
| |
| cfg |
| } |