From 95f6685a0380e2784b8d95c0348b51564bfba802 Mon Sep 17 00:00:00 2001 From: Maxim Zhiburt Date: Thu, 21 Nov 2024 22:20:08 +0300 Subject: [PATCH 1/3] Fix README.md --- README.md | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index eea2769c..d557289c 100644 --- a/README.md +++ b/README.md @@ -133,9 +133,9 @@ struct Language { } let languages = vec![ - Language{ name: "C", designed_by: "Dennis Ritchie", invented_year: 1972 }, - Language{ name: "Rust", designed_by: "Graydon Hoare", invented_year: 2010 }, - Language{ name: "Go", designed_by: "Rob Pike", invented_year: 2009 }, + Language { name: "C", designed_by: "Dennis Ritchie", invented_year: 1972 }, + Language { name: "Rust", designed_by: "Graydon Hoare", invented_year: 2010 }, + Language { name: "Go", designed_by: "Rob Pike", invented_year: 2009 }, ]; let table = Table::new(languages).to_string(); @@ -210,14 +210,12 @@ If you want to peak style at runtime `Theme` might be better suited for it. Any `Style` can be customized. As well as a custom `Style` can be created from scratch. -A style can be used like this. - ```rust use tabled::{Table, Style}; let mut table = Table::new(&data); table.with(Style::psql()); -```expected +``` #### Styles From edb2f3f50ff25258276221498c8b7b133510f73c Mon Sep 17 00:00:00 2001 From: Maxim Zhiburt Date: Thu, 21 Nov 2024 23:27:35 +0300 Subject: [PATCH 2/3] tabled/ add CleanCharset::clean function --- tabled/src/settings/formatting/charset.rs | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/tabled/src/settings/formatting/charset.rs b/tabled/src/settings/formatting/charset.rs index f13c8195..07cf353b 100644 --- a/tabled/src/settings/formatting/charset.rs +++ b/tabled/src/settings/formatting/charset.rs @@ -1,3 +1,5 @@ +use std::borrow::Cow; + use crate::{ grid::config::Entity, grid::records::{ExactRecords, PeekableRecords, Records, RecordsMut}, @@ -72,6 +74,26 @@ impl Charset { #[derive(Debug, Default, Clone)] pub struct CleanCharset; +impl CleanCharset { + /// Removes all symbols which may break the layout such as `\t`, `\r` and more. + /// + /// Notice that tab is just removed rather then being replaced with spaces. + /// + /// # Example + /// + /// ``` + /// use tabled::settings::formatting::CleanCharset; + /// + /// assert_eq!( + /// CleanCharset::clean("Some\ttext\t\twith \\tabs\r\nSome"), + /// "Sometextwith \\tabs\nSome" + /// ) + /// ``` + pub fn clean(s: &str) -> Cow<'_, str> { + Cow::Owned(clean_charset(s)) + } +} + impl TableOption for CleanCharset where R: Records + ExactRecords + RecordsMut + PeekableRecords, From eb40bf5ec2638b2a27dc923b23b77e0538e25619 Mon Sep 17 00:00:00 2001 From: Maxim Zhiburt Date: Fri, 22 Nov 2024 00:19:46 +0300 Subject: [PATCH 3/3] tabled/ Improve docs --- tabled/src/tables/table.rs | 60 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/tabled/src/tables/table.rs b/tabled/src/tables/table.rs index 38a79c88..79b68dfa 100644 --- a/tabled/src/tables/table.rs +++ b/tabled/src/tables/table.rs @@ -100,6 +100,7 @@ impl Table { /// /// ``` /// use tabled::{Table, Tabled}; + /// use testing_table::assert_table; /// /// #[derive(Tabled)] /// struct Relationship { @@ -112,12 +113,24 @@ impl Table { /// ]; /// /// let table = Table::new(list); + /// + /// assert_table!( + /// table, + /// "+-------+" + /// "| love |" + /// "+-------+" + /// "| true |" + /// "+-------+" + /// "| false |" + /// "+-------+" + /// ); /// ``` /// /// ## Notice that you can pass tuples. /// /// ``` /// use tabled::{Table, Tabled}; + /// use testing_table::assert_table; /// /// #[derive(Tabled)] /// struct Relationship { @@ -130,12 +143,24 @@ impl Table { /// ]; /// /// let table = Table::new(list); + /// + /// assert_table!( + /// table, + /// "+------+-------+" + /// "| &str | love |" + /// "+------+-------+" + /// "| Kate | true |" + /// "+------+-------+" + /// "| | false |" + /// "+------+-------+" + /// ); /// ``` /// /// ## Notice that you can pass const arrays as well. /// /// ``` /// use tabled::Table; + /// use testing_table::assert_table; /// /// let list = vec![ /// ["Kate", "+", "+", "+", "-"], @@ -143,6 +168,41 @@ impl Table { /// ]; /// /// let table = Table::new(list); + /// + /// assert_table!( + /// table, + /// "+------+---+---+---+---+" + /// "| 0 | 1 | 2 | 3 | 4 |" + /// "+------+---+---+---+---+" + /// "| Kate | + | + | + | - |" + /// "+------+---+---+---+---+" + /// "| | - | - | - | - |" + /// "+------+---+---+---+---+" + /// ); + /// ``` + /// + /// ## As a different way to create a [`Table`], you can use [`Table::from_iter`]. + /// + /// ``` + /// use std::iter::FromIterator; + /// use tabled::Table; + /// use testing_table::assert_table; + /// + /// let list = vec![ + /// vec!["Kate", "+", "+", "+", "-"], + /// vec!["", "-", "-", "-", "-"], + /// ]; + /// + /// let table = Table::from_iter(list); + /// + /// assert_table!( + /// table, + /// "+------+---+---+---+---+" + /// "| Kate | + | + | + | - |" + /// "+------+---+---+---+---+" + /// "| | - | - | - | - |" + /// "+------+---+---+---+---+" + /// ); /// ``` pub fn new(iter: I) -> Self where