fancy-table 0.4.3

Fancy tables with bells and whistles
Documentation
use charset::{Charset, TableChars};

pub mod ansi;
pub mod charset;
mod fancy;
mod juststr;

#[derive(Debug)]
pub enum Layout {
    Slim,
    Fixed(usize),
    Expandable(usize),
}

#[derive(Debug)]
pub enum Overflow {
    Wrap,
    Truncate,
}

#[derive(Debug)]
pub enum Align {
    Center,
    Left,
    Right,
}

pub enum TitleAlign {
    LeftOffset(usize),
    RightOffset(usize),
}

pub enum Separator {
    Single,
    Double,
    Custom(char),
}

pub enum Width {
    Fixed(usize),
    Percentage(u8),
}

impl From<usize> for Width {
    fn from(v: usize) -> Self {
        Width::Fixed(v)
    }
}

pub struct FancyTableOpts {
    pub title_align: TitleAlign,
    pub charset: Charset,
    pub headers_separator: Option<Separator>,
    pub rows_separator: Option<Separator>,
    pub max_lines: usize,
}

pub struct FancyTable<'a, T: AsRef<str>> {
    width: usize,
    chars: TableChars,
    padding: usize,
    columns: Vec<ColSpec>,
    headers: Vec<T>,
    rows_separator: Option<Separator>,
    headers_separator: Option<Separator>,
    title: Option<TitleSpec<'a>>,
}

pub struct FancyTableBuilder<'a, T: AsRef<str>> {
    width: Width,
    padding: usize,
    max_lines: usize,
    rows_separator: Option<Separator>,
    headers_separator: Option<Separator>,
    charset: Charset,
    headers: Vec<T>,
    columns: Vec<ColSpec>,
    title: Option<&'a str>,
    title_align: TitleAlign,
}

#[derive(Debug)]
struct ColSpec {
    width: usize,
    max_lines: usize,
    align: Align,
    layout: Layout,
    overflow: Overflow,
}

struct TitleSpec<'a> {
    title: &'a str,
    align: TitleAlign,
}

#[doc(hidden)]
pub use juststr::JustedString;

#[doc(hidden)]
pub use juststr::Justify;