Пример #1
0
        public string Capitalize(CodeNamespace codeNamespace, CodeTypeMember member)
        {
            var name = member.GetOriginalName();

            if (name == member.Name)
            {
                if (!member.IsAnonymousType())
                {
                    name = member.Name;
                }
                else
                {
                    name = codeNamespace.GetNamesFromItems(member.Name).FirstOrDefault();
                    if (name == null)
                    {
                        name = member.Name;
                    }
                }
            }

            var matches = _wordRegEx.Matches(name);

            if (matches.Count == 0)
            {
                return(member.Name);
            }
            var nameParts = matches.Cast <Match>().Select(x => x.Value);
            var result    = new StringBuilder();

            foreach (var namePart in nameParts)
            {
                if (char.IsDigit(namePart.First()))
                {
                    result.Append(namePart);
                }
                else if (namePart.All(char.IsUpper) && namePart.Length >= _capitalizeAllUpperMinLength)
                {
                    result.Append(namePart.Substring(0, 1)).Append(namePart.Substring(1).ToLower());
                }
                else
                {
                    result.Append(namePart.Substring(0, 1).ToUpper()).Append(namePart.Substring(1));
                }
            }

            var resultName = result.ToString();

            if (!char.IsLetter(resultName[0]))
            {
                return(member.Name);
            }
            return(resultName);
        }