term-table

CLI Tables Made Easy
## Example ```rust use rand::Rng; use term_table::{row, row::Row, rows, table_cell::*, Table, TableStyle}; fn main() { let mut rng = rand::thread_rng(); let num_draws = 5; let num_numbers = 6; let range = 1..=99; let mut table = Table::builder() .rows(rows![row!(TableCell::builder("My Lucky Numbers") .alignment(Alignment::Center) .col_span(num_numbers))]) .style(TableStyle::elegant()) .build(); for _ in 0..num_draws { let mut row = Row::empty(); for _ in 0..num_numbers { let num: i32 = rng.gen_range(range.clone()); row.add_cell(TableCell::new(num.to_string())); } table.add_row(row); } println!("{}", table.render()); } ``` ### Here's the result ![extended style](https://i.imgur.com/64b0z1X.png) ## Table Styles It is possible to define your own table styles by creating a new instance of `TableStyle` This is what the extend table style implementation looks like. This is the default style in term-table-rs ```rust pub fn extended() -> TableStyle { return TableStyle { top_left_corner: '╔', top_right_corner: '╗', bottom_left_corner: '╚', bottom_right_corner: '╝', outer_left_vertical: '╠', outer_right_vertical: '╣', outer_bottom_horizontal: '╩', outer_top_horizontal: '╦', intersection: '╬', vertical: '║', horizontal: '═', }; } ``` `TableStyle` also implements a `simple()` table style function and a `blank()` table style function Those styles looks like this ### Blank ![blank style](https://i.imgur.com/HaKgXQj.png) ### Simple ![simple style](https://i.imgur.com/kGqlYD7.png) ## Column Widths It is possible to control the maximum width of table columns. The `max_column_width` property of `Table` can be set to restrict the width of all TableCells. The `set_max_column_width` function of `Table` can be used to set the max width of a specific column. The `set_max_column_widths` function provides the ability to set the width of multiple columns by passing in a `Vec` of tuples containing an index and width. ## Disabling Row Separators There are a few different options for disabling row separation. `Table` has three flags for controlling row separation: 1. `separate_rows` dictates whether rows are separated within the table ![separate_rows](https://i.imgur.com/a8nAg5o.png) 2. `has_top_boarder` dictates whether or not the table has a top border ![has_top_boarder](https://i.imgur.com/336tbDm.png) 3. `has_bottom_boarder` dictates whether or not the table has a bottom border ![has_bottom_boarder](https://i.imgur.com/C0ETZFi.png) Separators can also be controlled per row by setting the `has_separator` flag on `Row` ![has_separator](https://i.imgur.com/VAZJnC7.png)