improved_features/
improved_features.rs1use wrap_ansi::{WrapError, WrapOptions, wrap_ansi, wrap_ansi_checked};
2
3fn main() -> Result<(), WrapError> {
4 println!("=== Wrap-ANSI Improved Features Demo ===\n");
5
6 println!("1. Builder Pattern for Options:");
8 let options = WrapOptions::builder()
9 .hard_wrap(true)
10 .trim_whitespace(false)
11 .word_wrap(true)
12 .build();
13
14 let text = "This is a verylongwordthatexceedslimit example";
15 let wrapped = wrap_ansi(text, 15, Some(options));
16 println!("Input: {}", text);
17 println!("Output:\n{}\n", wrapped);
18
19 println!("2. Error Handling:");
21
22 match wrap_ansi_checked("Hello world", 10, None) {
24 Ok(result) => println!("Valid input wrapped: {}", result.replace('\n', "\\n")),
25 Err(e) => println!("Error: {}", e),
26 }
27
28 match wrap_ansi_checked("Hello world", 0, None) {
30 Ok(result) => println!("Result: {}", result),
31 Err(e) => println!("Expected error: {}", e),
32 }
33
34 let large_text = "x".repeat(100);
36 match wrap_ansi_checked(&large_text, 10, None) {
37 Ok(result) => println!(
38 "Large input handled: {} chars -> {} chars",
39 large_text.len(),
40 result.len()
41 ),
42 Err(e) => println!("Error with large input: {}", e),
43 }
44
45 println!();
46
47 println!("3. ANSI Color Preservation:");
49 let colored_text =
50 "\u{001B}[31mThis is red text that will be wrapped across multiple lines\u{001B}[39m";
51 let wrapped_colored = wrap_ansi(colored_text, 20, None);
52 println!("Colored text wrapped:");
53 println!("{}", wrapped_colored);
54 println!();
55
56 println!("4. Hyperlink Preservation:");
58 let hyperlink_text = "\u{001B}]8;;https://example.com\u{0007}This is a clickable link that spans multiple lines\u{001B}]8;;\u{0007}";
59 let wrapped_hyperlink = wrap_ansi(hyperlink_text, 15, None);
60 println!("Hyperlink text wrapped:");
61 println!("{}", wrapped_hyperlink);
62 println!();
63
64 println!("5. Complex ANSI Sequences:");
66 let complex_text =
67 "\u{001B}[31m\u{001B}[42mRed text on green background\u{001B}[39m\u{001B}[49m normal text";
68 let wrapped_complex = wrap_ansi(complex_text, 12, None);
69 println!("Complex ANSI wrapped:");
70 println!("{}", wrapped_complex);
71 println!();
72
73 println!("6. Unicode Support:");
75 let unicode_text = "Hello δΈη π γγγ«γ‘γ―";
76 let wrapped_unicode = wrap_ansi(unicode_text, 10, None);
77 println!("Unicode text wrapped:");
78 println!("{}", wrapped_unicode);
79
80 Ok(())
81}