summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Fenwick <pjf@perltraining.com.au>2018-08-12 21:43:54 +1000
committerPaul Fenwick <pjf@perltraining.com.au>2018-08-12 21:43:54 +1000
commit5320d55be62d55a2a2be5458e46b9352cd70edf0 (patch)
tree3a9578e2f5d4f624fde2a34b69de73e18c444fd1
parentf92e4df1f9894a63d0eadcd127fcf023aac5e72b (diff)
README: Document set_titles, use prettyformat::table, plus extra tests!
README: - Mention `set_titles()` - Explicitly `use prettytable::format` - Expand sample code to call `set_titles()` and `add_row()`s. lib.rs: - Added test from README code using the longhand FormatBuilder - Added test from README using FORMAT_NO_LINESEP_WITH_TITLE
-rw-r--r--README.md11
-rw-r--r--src/lib.rs57
2 files changed, 67 insertions, 1 deletions
diff --git a/README.md b/README.md
index f1bfbb2..5fd42fc 100644
--- a/README.md
+++ b/README.md
@@ -269,13 +269,14 @@ Configurable settings include:
- Junctions
- Column separators
- Line separators
+- Titles (using `table.set_titles()`)
To do this, either:
- create a new `TableFormat` object, then call setters until you get the desired configuration;
- or use the convenient `FormatBuilder` and Builder pattern, shown below
```rust
-let mut table = /* Initialize table */;
+let mut table = Table::new();
let format = format::FormatBuilder::new()
.column_separator('|')
.borders('|')
@@ -285,6 +286,10 @@ let format = format::FormatBuilder::new()
.padding(1, 1)
.build();
table.set_format(format);
+
+table.set_titles(row!["Title 1", "Title 2"]);
+table.add_row(row!["Value 1", "Value 2"]);
+table.add_row(row!["Value three", "Value four"]);
```
The code above will make the table look like
@@ -300,6 +305,8 @@ For convenience, several formats are predefined in `prettytable::format::consts`
Some formats and their respective outputs:
- ```rust
+ use prettytable::format;
+
table.set_format(*format::consts::FORMAT_NO_LINESEP_WITH_TITLE);
```
```
@@ -311,6 +318,8 @@ Some formats and their respective outputs:
+-------------+------------+
```
- ```rust
+ use prettytable::format;
+
table.set_format(*format::consts::FORMAT_NO_BORDER_LINE_SEPARATOR);
```
```
diff --git a/src/lib.rs b/src/lib.rs
index cf3e658..a3adbfe 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -967,6 +967,63 @@ mod tests {
assert_eq!(out, table.to_string().replace("\r\n", "\n"));
}
+ #[test]
+ fn test_readme_format() {
+
+ // The below is lifted from the README
+
+ let mut table = Table::new();
+ let format = format::FormatBuilder::new()
+ .column_separator('|')
+ .borders('|')
+ .separators(&[format::LinePosition::Top,
+ format::LinePosition::Bottom],
+ format::LineSeparator::new('-', '+', '+', '+'))
+ .padding(1, 1)
+ .build();
+ table.set_format(format);
+
+ table.set_titles(Row::new(vec![Cell::new("Title 1"), Cell::new("Title 2")]));
+ table.add_row(Row::new(vec![Cell::new("Value 1"), Cell::new("Value 2")]));
+ table.add_row(Row::new(vec![Cell::new("Value three"), Cell::new("Value four")]));
+
+ let out = "\
++-------------+------------+
+| Title 1 | Title 2 |
+| Value 1 | Value 2 |
+| Value three | Value four |
++-------------+------------+
+";
+
+ println!("{}", out);
+ println!("____");
+ println!("{}", table.to_string().replace("\r\n","\n"));
+ assert_eq!(out, table.to_string().replace("\r\n","\n"));
+ }
+
+ #[test]
+ fn test_readme_format_with_title() {
+ let mut table = Table::new();
+ table.set_format(*format::consts::FORMAT_NO_LINESEP_WITH_TITLE);
+
+ table.set_titles(Row::new(vec![Cell::new("Title 1"), Cell::new("Title 2")]));
+ table.add_row(Row::new(vec![Cell::new("Value 1"), Cell::new("Value 2")]));
+ table.add_row(Row::new(vec![Cell::new("Value three"), Cell::new("Value four")]));
+
+ let out = "\
++-------------+------------+
+| Title 1 | Title 2 |
++-------------+------------+
+| Value 1 | Value 2 |
+| Value three | Value four |
++-------------+------------+
+";
+ println!("{}", out);
+ println!("____");
+ println!("{}", table.to_string().replace("\r\n","\n"));
+ assert_eq!(out, table.to_string().replace("\r\n","\n"));
+ }
+
#[cfg(feature = "csv")]
mod csv {
use Table;