summaryrefslogtreecommitdiffstats
path: root/vendor/tabled/examples/height.rs
blob: 2da0f36d96f891d5539d5b7c263006c4eba8b025 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
//! This example demonstrates using the [`Height`] [`TableOption`] for adjusting
//! the height of a [`Table`].
//!
//! * [`Height`] supports three key features:
//!     * [`CellHeightIncrease`] spreads new whitespace between the [`Table`]
//! rows up to the specified line count.
//!     * [`CellHeightLimit`] removes lines from the [`Table`] rows fairly, until
//! it has no choice but to remove single-line-rows entirely, bottom up.
//!     * [`HeightList`] accepts an array of height specifications that are applied
//! to the rows with the same index. This is helpful for granularly specifying individual
//! row heights irrespective of [`Padding`] or [`Margin`].

use tabled::{
    settings::{peaker::PriorityMax, Height, Style},
    Table,
};

fn main() {
    let data = vec![("Multi\nline\nstring", 123), ("Single line", 234)];

    let mut table = Table::builder(data).build();
    table.with(Style::markdown());

    println!("Table\n");
    println!("{table}");
    println!();

    let table_ = table.clone().with(Height::increase(10)).to_string();

    println!("Table increase height to 10\n");
    println!("{table_}");
    println!();

    let table_ = table
        .clone()
        .with(Height::limit(4).priority::<PriorityMax>())
        .to_string();

    println!("Table decrease height to 4\n");
    println!("{table_}");

    let table_ = table
        .clone()
        .with(Height::limit(0).priority::<PriorityMax>())
        .to_string();

    println!("Table decrease height to 0\n");
    println!("{table_}");
}