# ascii_table
Print ASCII tables to the terminal.
## Example
```
use ::ascii_table::AsciiTable;
let ascii_table = AsciiTable::new();
let data = &[&["1", "2", "3"], &["4", "5", "6"], &["7", "8", "9"]];
ascii_table.println(data);
// ┌───┬───┬───┐
// │ 1 │ 2 │ 3 │
// │ 4 │ 5 │ 6 │
// │ 7 │ 8 │ 9 │
// └───┴───┴───┘
```
## Example
```
use ::ascii_table::{Align, AsciiTable, Width};
let mut ascii_table = AsciiTable::new();
ascii_table.set_max_width(Width::Fixed(26));
ascii_table
.column(0)
.set_header("H1")
.set_align(Align::Left);
ascii_table
.column(1)
.set_header("H2")
.set_align(Align::Center);
ascii_table
.column(2)
.set_header("H3")
.set_align(Align::Right);
let data: &[&[&str]] = &[&["v", "v", "v"], &["123", "456", "789", "abcdef"]];
ascii_table.println(data);
// ┌─────┬─────┬─────┬──────┐
// │ H1 │ H2 │ H3 │ │
// ├─────┼─────┼─────┼──────┤
// │ v │ v │ v │ │
// │ 123 │ 456 │ 789 │ abc+ │
// └─────┴─────┴─────┴──────┘
```
## Features
- `auto_table_width`: Sets the default max width of the Ascii Table to the width of the terminal.
- `color_codes`: Correctly calculates the width of a string when terminal color codes are present
(like those from the `colorful` crate).
- `wide_characters`: Correctly calculates the width of a string when wide characters are present
(like emoji's).
## Changelog
### v5.0.0 (2025-11-30)
- Complete rewrite. All the features are still the same except Ascii Table no longer accepts 2D arrays
of `Display`. You will have to stringify your data before you give it to Ascii Table.
### v4.0.8 (2025-10-12)
- Replaced the crate `termsize` with `termize` to fix a edge-case where it was unable to get the terminal
width on some SSH sessions. This will only affect the `auto_table_width` feature.
### v4.0.7 (2025-05-14)
- Replaced the crate `lazy_static` with `std::sync::LazyLock`. This change is only for the `color_codes`
feature.
### v4.0.6 (2025-02-25)
- Bumped Rust edition to 2024.
- Replaced `termion` with the more lightweight `termsize`. This will only affect the `auto_table_width`
feature.
### v4.0.5 (2024-11-20)
- Bumped crate unicode-width from 0.1 to 0.2.
### v4.0.4 (2024-08-28)
- Bumped versions on 3rd party crates.
### v4.0.3 (2023-08-28)
- Added documentation to explain Ascii Table's features.
- Some minor refactoring.
### v4.0.2 (2022-01-25)
- Created a new feature `auto_table_width`. It will set the default max width of your ascii table to
the width of your terminal. Note that `AsciiTable::set_max_width` will override this value.
- Changed ascii table default max width from 80 to 100.
### v4.0.1 (2022-01-24)
- Moved color code parsing to its own feature `color_codes`. Enable this feature when you want to display
colors in the terminal using the `colorful` crate.
- Created a new feature `wide_characters` who will use unicode rules to determine the width of strings.
Use this feature when you want to display emoji's or other wide characters.
### v4.0.0 (2022-01-23)
- Revamped API.