private static string Transform()

in code/src/CoreTemplateStudio/CoreTemplateStudio.Core/Casing/StringCasingExtensions.cs [59:107]


        private static string Transform(string name, char? separator, Func<char, int, char> firstLetterTreatment = null)
        {
            name = name.Trim();
            var builder = new StringBuilder();
            var lastChar = name[0];

            for (var i = 0; i < name.Length; i++)
            {
                var currentCharacter = name[i];

                if (Separators.Contains(currentCharacter))
                {
                    if (!Separators.Contains(lastChar))
                    {
                        builder.Append(separator);
                    }
                }

                if (char.IsLetterOrDigit(currentCharacter))
                {
                    if (IsNewWord(currentCharacter, lastChar, i))
                    {
                        // new word treatment
                        // do not insert duplicate separators and do not use separators at beginning
                        if (i != 0 && separator.HasValue && !Separators.Contains(lastChar))
                        {
                            builder.Append(separator);
                        }

                        if (firstLetterTreatment != null)
                        {
                            builder.Append(firstLetterTreatment(currentCharacter, i));
                        }
                        else
                        {
                            builder.Append(currentCharacter);
                        }
                    }
                    else
                    {
                        builder.Append(currentCharacter);
                    }
                }

                lastChar = name[i];
            }

            return builder.ToString();
        }