webrust 2.0.0

Python-like Rust for Web Applications - A bridge between Python simplicity and Rust power
Documentation
use webrust::prelude::*;

#[gui(Consolas 12px darkturquoise !darkslategray)]
fn main() {
    println("<silver>Legend: 🐍 Python  |  🧩 WebRust  |  🦀 Rust std");
    println("<darkturquoise,b>🚀 Python-like String Methods in Rust with WebRust");
    println("<limegreen>✨ Now with ultra-simplified splitby() method - Python syntax!");

    println("\n<gold,b>🔧 Trim / LTrim / RTrim:");
    println("<yellow> 🐍: \"  Hello World  \".strip()                    # \"Hello World\"");
    println("<deepskyblue> 🧩: \"  Hello World  \".trim()                    // same as std");
    println("<orange> 🦀: \"  Hello World  \".trim()");
    let r = "  Hello World  ".trim();
    println("<darkturquoise,b>📊 Result: '{r}'");

    println("<yellow> 🐍: \"###hello\".lstrip('#')");
    println("<deepskyblue> 🧩: \"###hello\".ltrim(\"#\")                   // WebRust alias");
    println("<orange> 🦀: \"###hello\".trim_start_matches('#')");
    let r = "###hello".ltrim("#");
    println("<darkturquoise,b>📊 Result: '{r}'");

    println("<yellow> 🐍: \"world!!!\".rstrip('!')");
    println("<deepskyblue> 🧩: \"world!!!\".rtrim(\"!\")                   // WebRust alias");
    println("<orange> 🦀: \"world!!!\".trim_end_matches('!')");
    let r = "world!!!".rtrim("!");
    println("<darkturquoise,b>📊 Result: '{r}'");

    println("\n<gold,b>🔤 Case Transformation:");
    println("<yellow> 🐍: \"Hello World\".upper()                       # \"HELLO WORLD\"");
    println("<deepskyblue> 🧩: \"Hello World\".upper()                     // WebRust alias");
    println("<orange> 🦀: \"Hello World\".to_uppercase()");
    let upper = "Hello World".upper();
    println("<darkturquoise,b>📊 Result: '{upper}'");

    println("<yellow> 🐍: \"Hello World\".lower()                       # \"hello world\"");
    println("<deepskyblue> 🧩: \"Hello World\".lower()                     // WebRust alias");
    println("<orange> 🦀: \"Hello World\".to_lowercase()");
    let lower = "Hello World".lower();
    println("<darkturquoise,b>📊 Result: '{lower}'");

    println("<yellow> 🐍: \"hello world\".title()                       # \"Hello World\"");
    println("<deepskyblue> 🧩: \"hello world\".title()                     // WebRust custom impl");
    println("<orange> 🦀: (custom implementation)");
    let title = "hello world".title();
    println("<darkturquoise,b>📊 Result: '{title}'");

    println("<yellow> 🐍: \"hello world\".capitalize()                  # \"Hello world\"");
    println("<deepskyblue> 🧩: \"hello world\".capitalize()               // WebRust custom impl");
    println("<orange> 🦀: (custom implementation)");
    let cap = "hello world".capitalize();
    println("<darkturquoise,b>📊 Result: '{cap}'");

    println("<yellow> 🐍: \"SwapCase\".swapcase()                       # \"sWAPcASE\"");
    println("<deepskyblue> 🧩: \"SwapCase\".swapcase()                     // WebRust custom impl");
    println("<orange> 🦀: (custom implementation)");
    let swapped = "SwapCase".swapcase();
    println("<darkturquoise,b>📊 Result: '{swapped}'");

    println("\n<gold,b>🔍 Search & Pattern Tests:");
    println("<yellow> 🐍: \"user@example.com\".startswith('user')        # True");
    println("<deepskyblue> 🧩: \"user@example.com\".startswith(\"user\")    // WebRust alias");
    println("<orange> 🦀: \"user@example.com\".starts_with(\"user\")");
    let starts_user = "user@example.com".startswith("user");
    println("<darkturquoise,b>📊 Result: {starts_user}");

    println("<yellow> 🐍: \"user@example.com\".endswith('.com')         # True");
    println("<deepskyblue> 🧩: \"user@example.com\".endswith(\".com\")     // WebRust alias");
    println("<orange> 🦀: \"user@example.com\".ends_with(\".com\")");
    let ends_com = "user@example.com".endswith(".com");
    println("<darkturquoise,b>📊 Result: {ends_com}");

    println("<yellow> 🐍: 'abcabc'.find('bc')                         # 1");
    println("<deepskyblue> 🧩: \"abcabc\".find(\"bc\")                     // same as std");
    println("<orange> 🦀: \"abcabc\".find(\"bc\")");
    let find_res = "abcabc"
        .find("bc")
        .map(|i| i.to_string())
        .unwrap_or("None".into());
    println("<darkturquoise,b>📊 Result: {find_res}");

    println("<yellow> 🐍: 'banana'.count('an')                        # 2");
    println(
        "<deepskyblue> 🧩: \"banana\".count(\"an\")                    // WebRust Python-like ✨",
    );
    println("<orange> 🦀: \"banana\".matches(\"an\").count()");
    let count_res = "banana".count("an");
    println("<darkturquoise,b>📊 Result: {count_res}");

    println("\n<gold,b>⭐ splitby - The Python-like Revolution:");
    println("<limegreen,b>🎯 ONE method, THREE patterns - Just like Python!");

    println("\n<cyan,b>📋 Pattern 1 - Delimiter splitby:");
    println(
        "<yellow> 🐍: \"python,rust,go\".split(\",\")                # ['python', 'rust', 'go']",
    );
    println(
        "<deepskyblue> 🧩: \"python,rust,go\".splitby(\",\")              // QUASI-IDENTICAL! ✨",
    );
    println("<orange> 🦀: \"python,rust,go\".split(',').collect::<Vec<_>>()");
    let langs = "python,rust,go".splitby(",");
    println("<darkturquoise,b>📊 Result: {langs:c}");

    println("\n<cyan,b>🔤 Pattern 2 - Whitespace splitby:");
    println(
        "<yellow> 🐍: \"hello  world\\ttab\".split()                 # ['hello', 'world', 'tab']",
    );
    println(
        "<deepskyblue> 🧩: \"hello  world\\ttab\".splitby(\"\")             // QUASI-IDENTICAL! ✨",
    );
    println("<orange> 🦀: \"hello  world\\ttab\".split_whitespace().collect::<Vec<_>>()");
    let words = "hello  world\ttab".splitby("");
    println("<darkturquoise,b>📊 Result: {words:c}");

    println("\n<cyan,b>📄 Pattern 3 - Line splitby:");
    println("<yellow> 🐍: \"L1\\nL2\\nL3\".split(\"\\n\")                  # ['L1', 'L2', 'L3']");
    println(
        "<deepskyblue> 🧩: \"L1\\nL2\\nL3\".splitby(\"\\n\")                // QUASI-IDENTICAL! ✨",
    );
    println("<orange> 🦀: \"L1\\nL2\\nL3\".lines().collect::<Vec<_>>()");
    let lines = "L1\nL2\nL3".splitby("\n");
    println("<darkturquoise,b>📊 Result: {lines:c}");

    println("\n<gold,b>🔗 Fluent Chaining - The Magic:");
    println("<yellow> 🐍: \", \".join(\"a,b,c\".split(\",\"))             # \"a, b, c\"");
    println(
        "<deepskyblue> 🧩: \"a,b,c\".splitby(\",\").join(\", \")            // PURE ELEGANCE! ✨",
    );
    let chain1 = "a,b,c".splitby(",").join("");
    println("<darkturquoise,b>📊 Result: '{chain1}'");

    println("<yellow> 🐍: \"-\".join(\"hello world\".split())             # \"hello-world\"");
    println(
        "<deepskyblue> 🧩: \"hello world\".splitby(\"\").join(\"-\")        // PURE ELEGANCE! ✨",
    );
    let chain2 = "hello world".splitby("").join("-");
    println("<darkturquoise,b>📊 Result: '{chain2}'");

    println("<yellow> 🐍: \" | \".join(\"L1\\nL2\".split(\"\\n\"))          # \"L1 | L2\"");
    println(
        "<deepskyblue> 🧩: \"L1\\nL2\".splitby(\"\\n\").join(\" | \")        // PURE ELEGANCE! ✨",
    );
    let chain3 = "L1\nL2\nL3".splitby("\n").join("");
    println("<darkturquoise,b>📊 Result: '{chain3}'");

    println("\n<gold,b>🔄 Replace:");
    println("<yellow> 🐍: \"a-b-c\".replace('-', '_')                  # \"a_b_c\"");
    println("<deepskyblue> 🧩: \"a-b-c\".replace(\"-\", \"_\")             // same as std");
    println("<orange> 🦀: \"a-b-c\".replace(\"-\", \"_\")");
    let rep = "a-b-c".replace("-", "_");
    println("<darkturquoise,b>📊 Result: '{rep}'");

    println("<yellow> 🐍: \"a-b-c\".replace('-', '_', 1)              # \"a_b-c\"");
    println("<deepskyblue> 🧩: \"a-b-c\".replacen(\"-\", \"_\", 1)         // same as std");
    println("<orange> 🦀: \"a-b-c\".replacen(\"-\", \"_\", 1)");
    let rep1 = "a-b-c".replacen("-", "_", 1);
    println("<darkturquoise,b>📊 Result: '{rep1}'");

    println("\n<gold,b>🎨 Padding & Formatting:");
    println("<yellow> 🐍: \"42\".zfill(6)                             # \"000042\"");
    println("<deepskyblue> 🧩: \"42\".zfill(6)                            // WebRust custom impl");
    println("<orange> 🦀: (custom implementation)");
    let z = "42".zfill(6);
    println("<darkturquoise,b>📊 Result: '{z}'");

    println("<yellow> 🐍: \"left\".ljust(10, '-')                      # \"left------\"");
    println("<deepskyblue> 🧩: \"left\".ljust(10, '-')                     // WebRust custom impl");
    println("<orange> 🦀: (custom implementation)");
    let lj = "left".ljust(10, '-');
    println("<darkturquoise,b>📊 Result: '{lj}'");

    println("<yellow> 🐍: \"right\".rjust(10, '-')                     # \"-----right\"");
    println("<deepskyblue> 🧩: \"right\".rjust(10, '-')                    // WebRust custom impl");
    println("<orange> 🦀: (custom implementation)");
    let rj = "right".rjust(10, '-');
    println("<darkturquoise,b>📊 Result: '{rj}'");

    println("<yellow> 🐍: \"rust\".center(10, '*')                     # \"***rust***\"");
    println("<deepskyblue> 🧩: \"rust\".center(10, '*')                    // WebRust custom impl");
    println("<orange> 🦀: (custom implementation)");
    let c = "rust".center(10, '*');
    println("<darkturquoise,b>📊 Result: '{c}'");

    println("\n<gold,b>🏷️ Prefix / Suffix:");
    println("<yellow> 🐍: \"prefix_hello\".removeprefix('prefix_')     # \"hello\"");
    println("<deepskyblue> 🧩: \"prefix_hello\".removeprefix(\"prefix_\")  // WebRust alias");
    println("<orange> 🦀: \"prefix_hello\".strip_prefix(\"prefix_\").unwrap_or(\"prefix_hello\")");
    let no_pre = "prefix_hello".removeprefix("prefix_");
    println("<darkturquoise,b>📊 Result: '{no_pre}'");

    println("<yellow> 🐍: \"world!!!\".removesuffix('!')               # \"world!!\"");
    println("<deepskyblue> 🧩: \"world!!!\".removesuffix(\"!\")            // WebRust alias");
    println("<orange> 🦀: \"world!!!\".strip_suffix(\"!\").unwrap_or(\"world!!!\")");
    let no_suf = "world!!!".removesuffix("!");
    println("<darkturquoise,b>📊 Result: '{no_suf}'");

    println("\n<gold,b>✅ Content Validation:");
    println("<yellow> 🐍: \"hello\".isalpha()                        # True");
    println("<deepskyblue> 🧩: \"hello\".isalpha()                       // WebRust alias");
    println("<orange> 🦀: \"hello\".chars().all(|c| c.is_alphabetic())");
    let is_alpha = "hello".isalpha();
    println("<darkturquoise,b>📊 Result: {is_alpha}");

    println("<yellow> 🐍: \"12345\".isdigit()                        # True");
    println("<deepskyblue> 🧩: \"12345\".isdigit()                       // WebRust alias");
    println("<orange> 🦀: \"12345\".chars().all(|c| c.is_ascii_digit())");
    let is_digit = "12345".isdigit();
    println("<darkturquoise,b>📊 Result: {is_digit}");

    println("<yellow> 🐍: \"Rust2025\".isalnum()                      # True");
    println("<deepskyblue> 🧩: \"Rust2025\".isalnum()                     // WebRust alias");
    println("<orange> 🦀: \"Rust2025\".chars().all(|c| c.is_alphanumeric())");
    let is_alnum = "Rust2025".isalnum();
    println("<darkturquoise,b>📊 Result: {is_alnum}");

    println("<yellow> 🐍: \"RUST\".isupper()                         # True");
    println("<deepskyblue> 🧩: \"RUST\".isupper()                        // WebRust custom impl");
    println("<orange> 🦀: (custom implementation)");
    let is_up = "RUST".isupper();
    println("<darkturquoise,b>📊 Result: {is_up}");

    println("<yellow> 🐍: \"python\".islower()                       # True");
    println("<deepskyblue> 🧩: \"python\".islower()                      // WebRust custom impl");
    println("<orange> 🦀: (custom implementation)");
    let is_low = "python".islower();
    println("<darkturquoise,b>📊 Result: {is_low}");

    println("\n<gold,b>🌍 Real-World Examples:");

    println("\n<cyan,b>📊 CSV Processing:");
    let csv_data = "name,age,city\nAlice,25,Paris\nBob,30,Lyon";
    let rows = csv_data.splitby("\n");
    let headers = rows[0].splitby(",");
    println("<darkturquoise,b>📋 Headers: {headers:c}");

    for (i, row) in rows.iter().skip(1).enumerate() {
        let fields = row.splitby(",");
        let row_num = i + 1;
        let name = fields[0];
        let age = fields[1];
        let city = fields[2];
        println("<lightblue>   Row {row_num}: {name} (age {age}) from {city}");
    }

    println("\n<cyan,b>🏷️ Tag Processing:");
    let raw_tags = "rust, performance,  safety,   memory ";
    let clean_tags = raw_tags
        .splitby(",")
        .iter()
        .map(|tag| tag.trim())
        .filter(|tag| !tag.is_empty())
        .collect::<Vec<_>>()
        .join("");
    println("<darkturquoise,b>🏷️ Clean tags: {clean_tags}");

    println("\n<cyan,b>📁 Path Processing:");
    let path = "src/viz/string.rs";
    let parts = path.splitby("/");
    println("<darkturquoise,b>📂 Path parts: {parts:c}");
    let file_parts = parts.last().unwrap().splitby(".");
    let file_name = file_parts[0];
    let file_ext = file_parts[1];
    println("<darkturquoise,b>📄 File: name='{file_name}', ext='{file_ext}'");

    println("\n<gold,b>⚡ Performance Showcase:");
    println("<limegreen>🚀 All splitby() methods are #[inline] - Zero overhead!");
    println("<limegreen>🎯 Pattern matching resolved at compile time!");
    println("<limegreen>✨ Python syntax with Rust performance!");

    println("\n<limegreen,b>💬 Interactive Demo:");
    let input_txt: String = input("Enter text with commas, spaces, or newlines:");
    if !input_txt.is_empty() {
        println("\n<cyan,b>🔍 Analysis:");

        let by_comma = input_txt.splitby(",");
        let by_space = input_txt.splitby("");
        let by_newline = input_txt.splitby("\n");

        if by_comma.len() > 1 {
            println("<yellow>📋 CSV-like (comma): {by_comma:c}");
        }
        if by_space.len() > 1 {
            println("<lightblue>🔤 Words (space): {by_space:c}");
        }
        if by_newline.len() > 1 {
            println("<lightgreen>📄 Lines (newline): {by_newline:c}");
        }

        let upper = input_txt.upper();
        let is_alpha = input_txt.isalpha();
        let trimmed = input_txt.trim();

        println("<darkturquoise,b>✨ Transformations:");
        println("<darkturquoise>   Upper: '{upper}'");
        println("<darkturquoise>   Is alphabetic: {is_alpha}");
        println("<darkturquoise>   Trimmed: '{trimmed}'");
    }

    println("\n<gold,b>🎉 WebRust Achievement Unlocked:");
    println("<limegreen,b>✅ Python syntax: splitby(\",\"), splitby(\"\"), splitby(\"\\n\")");
    println("<limegreen,b>✅ Rust performance: Zero-cost abstractions");
    println("<limegreen,b>✅ Fluent chaining: .splitby().join()");
    println("<limegreen,b>✅ Type safety: Compile-time guarantees");
    println("<limegreen,b>✅ Ergonomics: Best of both worlds!");

    println("\n<darkturquoise,b>🚀 WebRust - Where Python meets Rust performance!");
    println(
        "<silver>💡 One trait, infinite possibilities. Welcome to the future of string processing!",
    );
}