summaryrefslogtreecommitdiffstats
path: root/vendor/tabled/examples/color.rs
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/tabled/examples/color.rs')
-rw-r--r--vendor/tabled/examples/color.rs74
1 files changed, 74 insertions, 0 deletions
diff --git a/vendor/tabled/examples/color.rs b/vendor/tabled/examples/color.rs
new file mode 100644
index 000000000..b7064b306
--- /dev/null
+++ b/vendor/tabled/examples/color.rs
@@ -0,0 +1,74 @@
+//! This example demonstrates using the [`Color`] [setting](tabled::settings) to
+//! stylize text, backgrounds, and borders.
+//!
+//! * 🚩 This example requires the `color` feature.
+//!
+//! * Note how [`Format::content()`] is used to break out [`CellOption`]
+//! specifications. This is helpful for organizing extensive [`Table`] configurations.
+
+use std::convert::TryFrom;
+
+use owo_colors::OwoColorize;
+
+use tabled::{
+ settings::{
+ object::{Columns, Rows},
+ style::{BorderColor, Style},
+ Color, Format, Modify,
+ },
+ Table, Tabled,
+};
+
+#[derive(Tabled)]
+struct Bsd {
+ distribution: &'static str,
+ year_of_first_release: usize,
+ is_active: bool,
+}
+
+impl Bsd {
+ fn new(distribution: &'static str, year_of_first_release: usize, is_active: bool) -> Self {
+ Self {
+ distribution,
+ year_of_first_release,
+ is_active,
+ }
+ }
+}
+
+fn main() {
+ let data = vec![
+ Bsd::new("BSD", 1978, false),
+ Bsd::new("SunOS", 1982, false),
+ Bsd::new("NetBSD", 1993, true),
+ Bsd::new("FreeBSD", 1993, true),
+ Bsd::new("OpenBSD", 1995, true),
+ ];
+
+ let red = Format::content(|s| s.red().on_bright_white().to_string());
+ let blue = Format::content(|s| s.blue().to_string());
+ let green = Format::content(|s| s.green().to_string());
+
+ let color_red = Color::try_from(' '.red().to_string()).unwrap();
+ let color_purple = Color::try_from(' '.purple().to_string()).unwrap();
+
+ let yellow_color = Color::try_from(' '.yellow().to_string()).unwrap();
+
+ let first_row_style = Modify::new(Rows::first()).with(
+ BorderColor::default()
+ .bottom(color_red)
+ .corner_bottom_left(color_purple.clone())
+ .corner_bottom_right(color_purple),
+ );
+
+ let mut table = Table::new(data);
+ table
+ .with(Style::psql())
+ .with(yellow_color)
+ .with(first_row_style)
+ .with(Modify::new(Columns::single(0)).with(red))
+ .with(Modify::new(Columns::single(1)).with(green))
+ .with(Modify::new(Columns::single(2)).with(blue));
+
+ println!("{table}");
+}