//! 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::Priority, 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(Priority::max(true)))
        .to_string();

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

    let table_ = table
        .clone()
        .with(Height::limit(0).priority(Priority::max(true)))
        .to_string();

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