| //! 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) |
| } |
| } |