Skip to main content

styling/
styling.rs

1//! Text styling — applying semantic styles to output content.
2//!
3//! Demonstrates bold, italic, underline, strikethrough, dim styles across
4//! different formats (Text with ANSI codes, Markdown with syntax).
5//!
6//! Run with:
7//! ```sh
8//! cargo run --example styling
9//! ```
10
11use scriba::{Format, Output, Styled, TextStyle, Ui};
12
13fn main() -> scriba::Result<()> {
14    // Text format — ANSI escape codes applied
15    println!("=== TEXT FORMAT (ANSI codes) ===\n");
16
17    let ui_text = Ui::new().with_format(Format::Text);
18
19    let output_text = Output::new()
20        .heading(1, "Text Styling Examples")
21        .styled_paragraph(Styled::new("This is bold text", TextStyle::Bold))
22        .styled_paragraph(Styled::new("This is italic text", TextStyle::Italic))
23        .styled_paragraph(Styled::new("This is bold and italic", TextStyle::BoldItalic))
24        .styled_paragraph(Styled::new("This is underlined", TextStyle::Underline))
25        .styled_paragraph(Styled::new("This is strikethrough", TextStyle::Strikethrough))
26        .styled_paragraph(Styled::new("This is dimmed/faded", TextStyle::Dim));
27
28    ui_text.print(&output_text)?;
29
30    // Markdown format — Markdown syntax applied
31    println!("\n=== MARKDOWN FORMAT ===\n");
32
33    let ui_md = Ui::new().with_format(Format::Markdown);
34
35    let output_md = Output::new()
36        .heading(1, "Text Styling in Markdown")
37        .styled_paragraph(Styled::new("This is bold", TextStyle::Bold))
38        .styled_paragraph(Styled::new("This is italic", TextStyle::Italic))
39        .styled_paragraph(Styled::new("This is bold italic", TextStyle::BoldItalic))
40        .styled_paragraph(Styled::new("This has strikethrough", TextStyle::Strikethrough))
41        .styled_paragraph(Styled::new("This is underlined", TextStyle::Underline));
42
43    ui_md.print(&output_md)?;
44
45    // Direct use of Styled API
46    println!("\n=== DIRECT API ===\n");
47
48    let bold_styled = Styled::new("Warning: check your config", TextStyle::Bold);
49    let italic_styled = Styled::new("Optional: skip if unneeded", TextStyle::Italic);
50    let dim_styled = Styled::new("Hint: use --verbose for more detail", TextStyle::Dim);
51
52    println!("ANSI:");
53    println!("  {}", bold_styled.render_ansi());
54    println!("  {}", italic_styled.render_ansi());
55    println!("  {}", dim_styled.render_ansi());
56
57    println!("\nMarkdown:");
58    println!("  {}", bold_styled.render_markdown());
59    println!("  {}", italic_styled.render_markdown());
60    println!("  {}", dim_styled.render_markdown());
61
62    Ok(())
63}