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();
}