#[allow(clippy::too_many_lines)]
pub fn to_pascal_case(s: &str) -> String {
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(),
_ => {}
}
s.split('_')
.map(|word| {
let mut chars = word.chars();
match chars.next() {
None => String::new(),
Some(first) => first.to_uppercase().chain(chars).collect(),
}
})
.collect()
}