public string ConvertToPascalCase()

in SharpGen/Transform/NamingRulesManager.PascalCase.cs [46:118]


        public string ConvertToPascalCase(string text, NamingFlags namingFlags)
        {
            var splittedPhrase = text.Split('_');
            StringBuilder sb = new();

            for (var i = 0; i < splittedPhrase.Length; i++)
            {
                var subPart = splittedPhrase[i];

                // Don't perform expansion when asked
                if ((namingFlags & NamingFlags.NoShortNameExpand) == 0)
                {
                    while (subPart.Length > 0)
                    {
                        var continueReplace = false;
                        foreach (var regExp in _expandShortName)
                        {
                            var regex = regExp.Regex;
                            var newText = regExp.Replace;

                            if (regex.Match(subPart).Success)
                            {
                                if (regExp.HasRegexReplace)
                                {
                                    subPart = regex.Replace(subPart, regExp.Replace);
                                    sb.Append(subPart);
                                    subPart = string.Empty;
                                }
                                else
                                {
                                    subPart = regex.Replace(subPart, string.Empty);
                                    sb.Append(newText);
                                    continueReplace = true;
                                }

                                break;
                            }
                        }

                        if (!continueReplace)
                        {
                            break;
                        }
                    }
                }

                // Else, perform a standard conversion
                if (subPart.Length > 0)
                {
                    // If string is not Pascal Case, then Pascal Case it
                    if (IsPascalCase(subPart, out var numberOfCharLowercase))
                    {
                        sb.Append(subPart);
                    }
                    else
                    {
                        var splittedPhraseChars = numberOfCharLowercase > 0
                                                      ? subPart.ToCharArray()
                                                      : subPart.ToLower().ToCharArray();

                        if (splittedPhraseChars.Length > 0)
                            splittedPhraseChars[0] = char.ToUpper(splittedPhraseChars[0]);

                        sb.Append(new string(splittedPhraseChars));
                    }
                }

                if ((namingFlags & NamingFlags.KeepUnderscore) != 0 && i + 1 < splittedPhrase.Length)
                    sb.Append('_');
            }

            return sb.ToString();
        }