# CLI Table
Rust crate for printing tables on command line.
## Usage
Add `cli-table` in your `Cargo.toms`'s `dependencies` section
```toml
[dependencies]
cli-table = "0.3"
```
Each cell in a `Table` can be formatted using `CellFormat`. `CellFormat` can be easily created like this:
```rust
// Justifies contents of a cell to right
let justify_right = CellFormat::builder().justify(Justify::Right).build();
// Makes contents of a cell bold
let bold = CellFormat::builder().bold(true).build();
```
`Table` can be formatted using `TableFormat`. It is very easy to create a custom table format, but for simplicity, this
crate provides a few predefined `TableFormat`s:
- `BORDER_COLUMN_TITLE`: Format with borders, column separators and row separators (calling `Default::default()` on
`TableFormat` also returns this format)
- `BORDER_COLUMN_NO_ROW`: Format with borders and column separators (without row separators)
- `BORDER_COLUMN_TITLE`: Format with borders, column separators and title separator (without row separators)
- `BORDER_NO_COLUMN_ROW`: Format with borders and row separators (without column separators)
- `NO_BORDER_COLUMN_ROW`: Format with no borders, column separators and row separators
- `NO_BORDER_COLUMN_TITLE`: Format with no borders, column separators and title separator (without row separators)
To create a table, you can use `Table::new()` like this:
```rust
let table = Table::new(
vec![
Row::new(vec![
Cell::new(&format!("Name"), bold),
Cell::new("Age (in years)", bold),
]),
Row::new(vec![
Cell::new("Tom", Default::default()),
Cell::new("10", justify_right),
]),
Row::new(vec![
Cell::new("Jerry", Default::default()),
Cell::new("15", justify_right),
]),
Row::new(vec![
Cell::new("Scooby Doo", Default::default()),
Cell::new("25", justify_right),
]),
],
Default::default(),
)?;
```
To print this table on `stdout`, you can call `table.print_stdout()`.
Below is the output of the table we created just now:
```
+------------+----------------+
| Tom | 10 |
+------------+----------------+
| Jerry | 15 |
+------------+----------------+
| Scooby Doo | 25 |
+------------+----------------+
```
## License
Licensed under either of
- Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (http://opensource.org/licenses/MIT)
at your option.
## Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as
defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.