1use charset::{Charset, TableChars};
2
3pub mod ansi;
4pub mod charset;
5mod fancy;
6mod juststr;
7
8pub enum Layout {
9 Slim,
10 Fixed(usize),
11 Expandable(usize),
12}
13
14pub enum Overflow {
15 Wrap,
16 Truncate,
17}
18
19pub enum Align {
20 Center,
21 Left,
22 Right,
23}
24
25pub enum TitleAlign {
26 LeftOffset(usize),
27 RightOffset(usize),
28}
29
30pub enum Separator {
31 Single,
32 Double,
33 Custom(char),
34}
35
36pub struct FancyTableOpts {
37 pub title_align: TitleAlign,
38 pub charset: Charset,
39 pub headers_separator: Option<Separator>,
40 pub rows_separator: Option<Separator>,
41 pub max_lines: usize,
42}
43
44pub struct FancyTable<'a, T: AsRef<str>> {
45 width: usize,
46 chars: TableChars,
47 padding: usize,
48 columns: Vec<ColSpec>,
49 headers: Vec<T>,
50 rows_separator: Option<Separator>,
51 headers_separator: Option<Separator>,
52 title: Option<TitleSpec<'a>>,
53}
54
55pub struct FancyTableBuilder<'a, T: AsRef<str>> {
56 width: usize,
57 padding: usize,
58 max_lines: usize,
59 rows_separator: Option<Separator>,
60 headers_separator: Option<Separator>,
61 charset: Charset,
62 headers: Vec<T>,
63 columns: Vec<ColSpec>,
64 title: Option<&'a str>,
65 title_align: TitleAlign,
66}
67
68struct ColSpec {
69 width: usize,
70 max_lines: usize,
71 align: Align,
72 layout: Layout,
73 overflow: Overflow,
74}
75
76struct TitleSpec<'a> {
77 title: &'a str,
78 align: TitleAlign,
79}
80
81#[doc(hidden)]
82pub use juststr::JustedString;
83
84#[doc(hidden)]
85pub use juststr::Justify;