using System.Text;
namespace GlitchyEngine.Extensions;
public static class StringExtension
{
///
/// Converts a variable name to a pretty name as good as reasonably possible.
///
/// The name of a variable to prettify.
/// The pretty string.
public static string ToPrettyName(this string uglyName)
{
StringBuilder sb = new StringBuilder(uglyName.Length);
bool wasUpper = false;
bool inWord = false;
bool inNumber = false;
foreach (char c in uglyName)
{
if (char.IsLetter(c))
{
if (inNumber)
{
sb.Append(' ');
inNumber = false;
}
bool newWord = !inWord;
if (char.IsUpper(c) && !wasUpper)
{
newWord = true;
wasUpper = true;
if (inWord)
{
sb.Append(' ');
}
}
else if (char.IsLower(c))
{
wasUpper = false;
}
sb.Append(newWord ? char.ToUpper(c) : char.ToLower(c));
inWord = true;
}
else if (char.IsDigit(c))
{
if (inWord)
{
sb.Append(' ');
inWord = false;
inNumber = true;
}
sb.Append(c);
}
else if (inWord || inNumber)
{
sb.Append(' ');
inWord = false;
inNumber = false;
wasUpper = false;
}
}
return sb.ToString();
}
}