Beispiel #1
0
        protected List<CodeEnum> parseEnums(string src, int namespaceIndex, HashSet<string> usingNamespaces, WcfCleanerOptions options)
        {
            var enums = new List<CodeEnum>();
            var enumMatches = RegexHelper.MatchesGeneric("public enum ([^ ]+) {", src.Substring(namespaceIndex));

            int index = namespaceIndex;

            foreach (var enumMatch in enumMatches)
            {
                int prevIndex = index;
                index = enumMatch.Index + namespaceIndex;

                // 5) Gather preceding remarks and attributes
                string headings = gatherHeadings(src, index, prevIndex, usingNamespaces, options);

                // 6) Save enum name
                var groups = enumMatch.Groups;
                var enumName = groups[1].Value;

                var codeEnum = new CodeEnum
                {
                    Headings = headings,
                    Name = enumName
                };

                // Count open/closing curly braces until end of enum
                int startEnum = 0;
                int endEnum = 0;
                countCodeBraces(src, index, out startEnum, out endEnum);

                string enumBody = src.Substring(startEnum, endEnum - startEnum);

                // 7) Begin property/method loop
                parseEnumItems(enumBody, codeEnum, usingNamespaces, options);

                index = endEnum + 1;

                enums.Add(codeEnum);
            }

            return enums;
        }
Beispiel #2
0
        protected void writeEnum(FileStreamWriter text, WcfCleanerOptions options, CodeEnum codeEnum)
        {
            text.WriteLine(codeEnum.Headings)
                .WriteLine("\tpublic enum ", codeEnum.Name)
                .WriteLine("\t{");

            codeEnum.Values.FencePostBefore(
                enumValue =>
                {
                    text.WriteLine();
                },
                enumValue =>
                {
                    writeEnumValue(text, enumValue);
                }
            );

            text.WriteLine("\t}");
        }
Beispiel #3
0
        protected void parseEnumItems(string enumBody, CodeEnum codeEnum, HashSet<string> usingNamespaces, WcfCleanerOptions options)
        {
            var enumItems = RegexHelper.MatchesGeneric(@"\n\s+([\w_\$]+),\n", enumBody);

            int index = 0;

            foreach (var enumItemMatch in enumItems)
            {
                int prevIndex = index;
                index = enumItemMatch.Index;

                var groups = enumItemMatch.Groups.Cast<Group>().ToArray();
                string name = groups[1].Value;

                var enumValue = parseEnumValue(name, index, prevIndex, enumBody, usingNamespaces, options);
                codeEnum.Values.Add(enumValue);
            }
        }