blob: 1139a2b993a1a15589361d9b2ea8ab4640d60b33 [file] [log] [blame]
//! This module contains a [`Span`] settings, it helps to
//! make a cell take more space then it generally takes.
//!
//! # Example
//!
//! ```
//! use tabled::{settings::{Span, Modify}, Table};
//!
//! let data = [[1, 2, 3], [4, 5, 6]];
//!
//! let table = Table::new(data)
//! .with(Modify::new((2, 0)).with(Span::column(2)))
//! .with(Modify::new((0, 1)).with(Span::column(2)))
//! .to_string();
//!
//! assert_eq!(
//! table,
//! concat!(
//! "+---+---+---+\n",
//! "| 0 | 1 |\n",
//! "+---+---+---+\n",
//! "| 1 | 2 | 3 |\n",
//! "+---+---+---+\n",
//! "| 4 | 6 |\n",
//! "+---+---+---+",
//! )
//! )
//! ```
mod column;
mod row;
pub use column::ColumnSpan;
pub use row::RowSpan;
/// Span represent a horizontal/column span setting for any cell on a [`Table`].
///
/// It will be ignored if:
/// - cell position is out of scope
/// - size is bigger then the total number of columns.
/// - size is bigger then the total number of rows.
///
/// ```rust,no_run
/// # use tabled::{Table, settings::{Style, Span, Modify, object::Columns}};
/// # let data: Vec<&'static str> = Vec::new();
/// let table = Table::new(&data)
/// .with(Modify::new(Columns::single(0)).with(Span::column(2)));
/// ```
///
/// [`Table`]: crate::Table
#[derive(Debug)]
pub struct Span;
impl Span {
/// New constructs a horizontal/column [`Span`].
///
/// If size is bigger then the total number of columns it will be ignored.
pub fn column(size: usize) -> ColumnSpan {
ColumnSpan::new(size)
}
/// New constructs a vertical/row [`Span`].
///
/// If size is bigger then the total number of rows it will be ignored.
pub fn row(size: usize) -> RowSpan {
RowSpan::new(size)
}
}