Crate papergrid

source ·
Expand description

Papergrid is a library for generating text-based tables.

It has relatively low level API. If you’re interested in a more friendly one take a look at tabled.

Example

use papergrid::{
    records::IterRecords,
    dimension::{Estimate},
    config::Borders,
    colors::NoColors,
    grid::iterable::Grid,
    config::spanned::SpannedConfig,
    dimension::spanned::SpannedGridDimension,
};

// Creating a borders structure of a grid.
let borders = 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('-'),
    vertical: Some('|'),
    left: Some('|'),
    right: Some('|'),
    intersection: Some('+'),
    left_intersection: Some('+'),
    right_intersection: Some('+'),
};

// Creating a grid config.
let mut cfg = SpannedConfig::default();
cfg.set_borders(borders);

// Creating an actual data for grid.
let records = vec![vec!["Hello", "World"], vec!["Hi", "World"]];
let records = IterRecords::new(records, 2, None);

// Estimate grid dimension.
let mut dimension = SpannedGridDimension::default();
dimension.estimate(&records, &cfg);

// Creating a grid.
let grid = Grid::new(&records, &dimension, &cfg, NoColors).to_string();

assert_eq!(
    grid,
    concat!(
        "+-----+-----+\n",
        "|Hello|World|\n",
        "+-----+-----+\n",
        "|Hi   |World|\n",
        "+-----+-----+",
    ),
);

Modules

  • A module which contains ANSIFmt trait and its implementation ANSIStr
  • A module which contains Colors trait and its blanket implementations.
  • A module which contains a general settings which might be used in other grid implementations.
  • The module contains an Dimension trait and its implementations.
  • Module contains a list of backends for pretty print tables.
  • The module contains a Records abstraction of a Grid trait and its implementers.
  • A module contains utility functions which grid relay on.