Ejemplo n.º 1
0
        /// <summary>
        /// Converts a string to PascalCase..
        /// </summary>
        /// <param name="text">The text to convert.</param>
        /// <param name="keepUnderscore">if set to <c>true</c> keep underscore in this name.</param>
        /// <returns></returns>
        public string ConvertToPascalCase(string text, NamingFlags namingFlags)
        {
            string[] splittedPhrase = text.Split('_');
            var sb = new StringBuilder();

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

                // Don't perform expansion when asked
                if ((namingFlags & NamingFlags.NoShortNameExpand) == 0)
                {
                    while (subPart.Length > 0)
                    {
                        bool 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 convertion
                if (subPart.Length > 0)
                {
                    int numberOfCharLowercase;
                    // If string is not Pascal Case, then Pascal Case it
                    if (IsPascalCase(subPart, out numberOfCharLowercase))
                    {
                        sb.Append(subPart);
                    }
                    else
                    {
                        char[] 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();
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Converts a string to PascalCase..
        /// </summary>
        /// <param name="text">The text to convert.</param>
        /// <param name="keepUnderscore">if set to <c>true</c> keep underscore in this name.</param>
        /// <returns></returns>
        public string ConvertToPascalCase(string text, NamingFlags namingFlags)
        {
            string[] splittedPhrase = text.Split('_');
            var      sb             = new StringBuilder();

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

                // Don't perform expansion when asked
                if ((namingFlags & NamingFlags.NoShortNameExpand) == 0)
                {
                    while (subPart.Length > 0)
                    {
                        bool 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 convertion
                if (subPart.Length > 0)
                {
                    int numberOfCharLowercase;
                    // If string is not Pascal Case, then Pascal Case it
                    if (IsPascalCase(subPart, out numberOfCharLowercase))
                    {
                        sb.Append(subPart);
                    }
                    else
                    {
                        char[] 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());
        }