tss-rust 0.2.2

Generated node type enums and metadata from tree-sitter-rust
Documentation
#[allow(clippy::too_many_lines)]
pub fn to_pascal_case(s: &str) -> String {
    // Handle special characters and operators
    match s {
        "macro_rules!" => return "MacroRulesBang".to_string(),
        "\"" => return "DoubleQuote".to_string(),
        "'" => return "SingleQuote".to_string(),
        "/*" => return "BlockCommentStart".to_string(),
        "*/" => return "BlockCommentEnd".to_string(),
        "//" => return "LineComment".to_string(),
        "/=" => return "DivAssign".to_string(),
        ":" => return "Colon".to_string(),
        "::" => return "PathSep".to_string(),
        ";" => return "Semicolon".to_string(),
        "," => return "Comma".to_string(),
        "." => return "Dot".to_string(),
        "!" => return "Bang".to_string(),
        "!=" => return "NotEq".to_string(),
        "=" => return "Eq".to_string(),
        "==" => return "EqEq".to_string(),
        "=>" => return "FatArrow".to_string(),
        ">" => return "Gt".to_string(),
        ">=" => return "Gte".to_string(),
        "<" => return "Lt".to_string(),
        "<=" => return "Lte".to_string(),
        "<<" => return "Shl".to_string(),
        ">>" => return "Shr".to_string(),
        "<<=" => return "ShlAssign".to_string(),
        ">>=" => return "ShrAssign".to_string(),
        "&" => return "And".to_string(),
        "&&" => return "AndAnd".to_string(),
        "&=" => return "AndAssign".to_string(),
        "|" => return "Or".to_string(),
        "||" => return "OrOr".to_string(),
        "|=" => return "OrAssign".to_string(),
        "^" => return "Xor".to_string(),
        "^=" => return "XorAssign".to_string(),
        "+" => return "Plus".to_string(),
        "+=" => return "PlusAssign".to_string(),
        "-" => return "Minus".to_string(),
        "-=" => return "MinusAssign".to_string(),
        "*" => return "Star".to_string(),
        "*=" => return "StarAssign".to_string(),
        "/" => return "Slash".to_string(),
        "%" => return "Percent".to_string(),
        "%=" => return "PercentAssign".to_string(),
        "(" => return "LParen".to_string(),
        ")" => return "RParen".to_string(),
        "[" => return "LBracket".to_string(),
        "]" => return "RBracket".to_string(),
        "{" => return "LBrace".to_string(),
        "}" => return "RBrace".to_string(),
        "@" => return "At".to_string(),
        "#" => return "Pound".to_string(),
        "?" => return "Question".to_string(),
        "$" => return "Dollar".to_string(),
        "_" => return "Underscore".to_string(),
        ".." => return "DotDot".to_string(),
        "..=" => return "DotDotEq".to_string(),
        "..." => return "DotDotDot".to_string(),
        "->" => return "RArrow".to_string(),
        "as" => return "AsKw".to_string(),
        "async" => return "AsyncKw".to_string(),
        "await" => return "AwaitKw".to_string(),
        "break" => return "BreakKw".to_string(),
        "const" => return "ConstKw".to_string(),
        "continue" => return "ContinueKw".to_string(),
        "crate" => return "CrateKw".to_string(),
        "dyn" => return "DynKw".to_string(),
        "else" => return "ElseKw".to_string(),
        "enum" => return "EnumKw".to_string(),
        "extern" => return "ExternKw".to_string(),
        "false" => return "FalseKw".to_string(),
        "fn" => return "FnKw".to_string(),
        "for" => return "ForKw".to_string(),
        "if" => return "IfKw".to_string(),
        "impl" => return "ImplKw".to_string(),
        "in" => return "InKw".to_string(),
        "let" => return "LetKw".to_string(),
        "loop" => return "LoopKw".to_string(),
        "match" => return "MatchKw".to_string(),
        "mod" => return "ModKw".to_string(),
        "move" => return "MoveKw".to_string(),
        "mut" => return "MutKw".to_string(),
        "pub" => return "PubKw".to_string(),
        "ref" => return "RefKw".to_string(),
        "return" => return "ReturnKw".to_string(),
        "self" => return "SelfKw".to_string(),
        "Self" => return "SelfType".to_string(),
        "static" => return "StaticKw".to_string(),
        "struct" => return "StructKw".to_string(),
        "super" => return "SuperKw".to_string(),
        "trait" => return "TraitKw".to_string(),
        "true" => return "TrueKw".to_string(),
        "type" => return "TypeKw".to_string(),
        "unsafe" => return "UnsafeKw".to_string(),
        "use" => return "UseKw".to_string(),
        "where" => return "WhereKw".to_string(),
        "while" => return "WhileKw".to_string(),
        _ => {}
    }

    // Regular snake_case to PascalCase
    s.split('_')
        .map(|word| {
            let mut chars = word.chars();
            match chars.next() {
                None => String::new(),
                Some(first) => first.to_uppercase().chain(chars).collect(),
            }
        })
        .collect()
}