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 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97
#![forbid(unsafe_code, unstable_features)] #![deny(missing_docs)] //! Rust crate for printing tables on command line. //! //! ## Usage //! //! Add `cli-table` in your `Cargo.toms`'s `dependencies` section //! //! ```ignore //! [dependencies] //! cli-table = "0.2" //! ``` //! //! Each cell in a [`Table`] can be formatted using [`CellFormat`]. [`CellFormat`] can be easily created like this: //! //! ```ignore //! // Justifies contents of a cell to right //! let justify_right = CellFormat::builder().justify(Justify::Right).build(); //! //! // Makes contents of a cell bold //! let bold = CellFormat::builder().bold(true).build(); //! ``` //! //! [`Table`] can be formatted using [`TableFormat`]. It is very easy to create a custom table format, but for //! simplicity, this crate provides a few predefined [`TableFormat`]s: //! //! - [`BORDER_COLUMN_ROW`]: Format with borders, column separators and row separators (calling `Default::default()` //! on [`TableFormat`] also returns this format) //! - [`BORDER_COLUMN_NO_ROW`]: Format with borders and column separators (without row separators) //! - [`BORDER_COLUMN_TITLE`]: Format with borders, column separators and title separator (without row separators) //! - [`BORDER_NO_COLUMN_ROW`]: Format with borders and row separators (without column separators) //! - [`NO_BORDER_COLUMN_ROW`]: Format with no borders, column separators and row separators //! - [`NO_BORDER_COLUMN_TITLE`]: Format with no borders, column separators and title separator (without row separators) //! //! To create a table, you can use [`Table::new()`] like this: //! //! ```ignore //! let table = Table::new( //! vec![ //! Row::new(vec![ //! Cell::new(&format!("Name"), bold), //! Cell::new("Age (in years)", bold), //! ]), //! Row::new(vec![ //! Cell::new("Tom", Default::default()), //! Cell::new("10", justify_right), //! ]), //! Row::new(vec![ //! Cell::new("Jerry", Default::default()), //! Cell::new("15", justify_right), //! ]), //! Row::new(vec![ //! Cell::new("Scooby Doo", Default::default()), //! Cell::new("25", justify_right), //! ]), //! ], //! Default::default(), //! ); //! ``` //! //! To print this table on `stdout`, you can call [`table.print_stdout()`]. //! //! Below is the output of the table we created just now: //! //! ```ignore //! +------------+----------------+ //! | Name | Age (in years) | <-- This row will appear in bold //! +------------+----------------+ //! | Tom | 10 | //! +------------+----------------+ //! | Jerry | 15 | //! +------------+----------------+ //! | Scooby Doo | 25 | //! +------------+----------------+ //! ``` //! //! [`Table`]: struct.Table.html //! [`CellFormat`]: struct.CellFormat.html //! [`TableFormat`]: struct.TableFormat.html //! [`Table::new()`]: struct.Table.html#method.new //! [`table.print_stdout()`]: struct.Table.html#method.print_stdout //! //! [`BORDER_COLUMN_ROW`]: format/constant.BORDER_COLUMN_ROW.html //! [`BORDER_COLUMN_NO_ROW`]: format/constant.BORDER_COLUMN_NO_ROW.html //! [`BORDER_COLUMN_TITLE`]: format/constant.BORDER_COLUMN_TITLE.html //! [`BORDER_NO_COLUMN_ROW`]: format/constant.BORDER_NO_COLUMN_ROW.html //! [`NO_BORDER_COLUMN_ROW`]: format/constant.NO_BORDER_COLUMN_ROW.html //! [`NO_BORDER_COLUMN_TITLE`]: format/constant.NO_BORDER_COLUMN_TITLE.html mod cell; mod row; mod table; pub mod format; pub use self::cell::Cell; pub use self::row::Row; pub use self::table::Table;