generated from PlexSheep/baserepo
idk why this isn't in master yet #94
|
@ -1,11 +1,105 @@
|
||||||
//! # tools that make printing stuff better
|
use comfy_table::presets;
|
||||||
|
use comfy_table::{CellAlignment, ContentArrangement, Table};
|
||||||
|
use console::{style, Color};
|
||||||
|
|
||||||
/// Quickly get a one line visual divider
|
/// Prints content with a simple border around it.
|
||||||
pub fn divider() -> String {
|
///
|
||||||
format!("{:=^80}", "=")
|
/// This function is a convenience wrapper around [blockfmt] and [println]. It automatically
|
||||||
|
/// formats the content with a border using the specified color and then prints it to the console.
|
||||||
|
///
|
||||||
|
/// # Example
|
||||||
|
///
|
||||||
|
/// ```
|
||||||
|
/// use libpt_cli::console::Color;
|
||||||
|
/// use libpt_cli::printing::blockprint;
|
||||||
|
/// # fn main() {
|
||||||
|
/// blockprint("Hello world!".to_string(), Color::Blue);
|
||||||
|
/// # }
|
||||||
|
/// ```
|
||||||
|
#[inline]
|
||||||
|
pub fn blockprint(content: impl ToString, color: Color) {
|
||||||
|
println!("{}", blockfmt(content, color))
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Quickly print a one line visual divider
|
/// Formats content with a simple border around it.
|
||||||
pub fn print_divider() {
|
///
|
||||||
println!("{:=^80}", "=")
|
/// This function is a convenience wrapper around [blockfmt_advanced] with preset values for
|
||||||
|
/// border style, content arrangement, and cell alignment. It automatically formats the content
|
||||||
|
/// with a border as large as possible and centers the content. The resulting cell is colored in
|
||||||
|
/// the specified color.
|
||||||
|
///
|
||||||
|
/// # Example
|
||||||
|
///
|
||||||
|
/// ```
|
||||||
|
/// use libpt_cli::console::Color;
|
||||||
|
/// use libpt_cli::printing::blockfmt;
|
||||||
|
/// # fn main() {
|
||||||
|
/// let formatted_content = blockfmt("Hello world!".to_string(), Color::Blue);
|
||||||
|
/// println!("{}", formatted_content);
|
||||||
|
/// # }
|
||||||
|
/// ```
|
||||||
|
#[inline]
|
||||||
|
pub fn blockfmt(content: impl ToString, color: Color) -> String {
|
||||||
|
blockfmt_advanced(
|
||||||
|
content,
|
||||||
|
color,
|
||||||
|
presets::UTF8_BORDERS_ONLY,
|
||||||
|
ContentArrangement::DynamicFullWidth,
|
||||||
|
CellAlignment::Center
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Formats content with a border around it.
|
||||||
|
///
|
||||||
|
/// Unless you are looking for something specific, use [blockfmt] or [blockprint].
|
||||||
|
///
|
||||||
|
/// The border can be created using box-drawing characters, and the content is formatted
|
||||||
|
/// within the border. The function allows customization of the border's color, preset,
|
||||||
|
/// content arrangement, and cell alignment.
|
||||||
|
///
|
||||||
|
/// # Example
|
||||||
|
/// ```
|
||||||
|
/// use libpt_cli::comfy_table::{presets, CellAlignment, ContentArrangement};
|
||||||
|
/// use libpt_cli::console::Color;
|
||||||
|
/// use libpt_cli::printing::blockfmt_advanced;
|
||||||
|
/// # fn main() {
|
||||||
|
/// println!(
|
||||||
|
/// "{}",
|
||||||
|
/// blockfmt_advanced(
|
||||||
|
/// "Hello world!".to_string(),
|
||||||
|
/// Color::Blue,
|
||||||
|
/// presets::UTF8_FULL,
|
||||||
|
/// ContentArrangement::DynamicFullWidth,
|
||||||
|
/// CellAlignment::Center
|
||||||
|
/// )
|
||||||
|
/// );
|
||||||
|
/// # }
|
||||||
|
/// ```
|
||||||
|
/// ```text
|
||||||
|
/// ┌────────────────────────────────────────────────────────────────────────────────────────┐
|
||||||
|
/// │ Hello world! │
|
||||||
|
/// └────────────────────────────────────────────────────────────────────────────────────────┘
|
||||||
|
/// ```
|
||||||
|
///
|
||||||
|
/// # Parameters
|
||||||
|
///
|
||||||
|
///
|
||||||
|
pub fn blockfmt_advanced(
|
||||||
|
content: impl ToString,
|
||||||
|
color: Color,
|
||||||
|
preset: &str,
|
||||||
|
arrangement: ContentArrangement,
|
||||||
|
alignment: CellAlignment
|
||||||
|
) -> String {
|
||||||
|
let mut table = Table::new();
|
||||||
|
table
|
||||||
|
.load_preset(preset)
|
||||||
|
.set_content_arrangement(arrangement)
|
||||||
|
.add_row(vec![content.to_string()]);
|
||||||
|
table
|
||||||
|
.column_mut(0)
|
||||||
|
.unwrap()
|
||||||
|
.set_cell_alignment(alignment);
|
||||||
|
|
||||||
|
format!("{}", style(table).fg(color))
|
||||||
}
|
}
|
||||||
|
|
Reference in New Issue