CSharpUML.VSParser.Parse C# (CSharp) Метод

Parse() публичный Метод

public Parse ( IEnumerable lines ) : IEnumerable
lines IEnumerable
Результат IEnumerable
        public IEnumerable<IUmlObject> Parse(IEnumerable<string> lines)
        {
            string content = String.Join (" ", lines);

            string packagename = "";
            if (content.Contains ("<package")) {
                Tag[] packages = ExtractTags (ref content, "package");
                if (packages.Length > 0) {
                    packagename = packages [0].Name;
                    content = packages [0].Content;
                }
            }

            // Console.WriteLine ("content: " + content);
            content = content.RegexReplace (@"[\r\n\s]+", " ");
            content = content.RegexReplace ("\"........-....-....-....-............\"", "");

            Tag[] junk = ExtractTags (ref content, "redefinableTemplateSignature");

            Tag[] classes = ExtractTags (ref content, "class", "Interface");

            foreach (Tag _tag in classes) {
                Tag tag = _tag;
                if (tag.Params.ContainsKey ("name")) {
                    junk = ExtractTags (ref tag.Content, "appliedStereotypesInternal");

                    Console.WriteLine ("Found " + tag.Tagname + ": " + tag.Params ["name"]);
                    Packages.CurrentPackage = packagename;
                    yield return new UmlClass (tag);
                } else {
                    Console.WriteLine ("weird: " + tag.Content);
                }
            }

            Tag[] enumerations = ExtractTags (ref content, "enumeration");

            foreach (Tag tag in enumerations) {
                if (tag.Params.ContainsKey ("name")) {
                    Console.WriteLine ("Found " + tag.Tagname + ": " + tag.Params ["name"]);
                    Packages.CurrentPackage = packagename;
                    yield return new UmlEnum (tag);
                } else {
                    Console.WriteLine ("weird: " + tag.Content);
                }
            }
        }

Same methods

VSParser::Parse ( string filename ) : IEnumerable

Usage Example

Пример #1
0
        private static void VisualStudio2Uml(IEnumerable <string> paths, string target)
        {
            if (target.Length > 0)
            {
                try {
                    Console.WriteLine("Read: " + target);
                    IUmlObject[] readObjs = new UmlParser().Parse(target).ToArray();
                    Console.WriteLine("Read: " + target);
                } catch (FileNotFoundException ex) {
                    Console.WriteLine(ex.ToString());
                }

                List <IUmlObject> objects = new List <IUmlObject> ();
                for (int _try = 0; _try <= 3 && objects.Count == 0; ++_try)
                {
                    foreach (string _path in paths)
                    {
                        string path = _path;
                        for (int p = 0; p < _try; ++p)
                        {
                            path += "/../";
                        }
                        Console.WriteLine(path);
                        Action <string> processFile = (filename) => {
                            if (filename.Contains("ModelDefinition") && !filename.Contains("ModelingProject"))
                            {
                                Console.WriteLine("Read: " + filename);
                                IParser parser = new VSParser();
                                objects.AddRange(parser.Parse(filename));
                            }
                        };
                        Files.SearchFiles(path, new string[] { ".uml" }, processFile);
                    }
                }
                objects.Sort();
                Console.WriteLine("Write: " + target);
                List <string> lines = new List <string> ();
                foreach (IUmlObject obj in objects.Where((o) => !IsBlacklisted(o.Name)))
                {
                    lines.Add(obj.ToUmlCode());
                    lines.Add("");
                }
                Files.WriteLines(target, lines);
            }
            else
            {
                Console.WriteLine("Error! No target file specified!");
            }
        }
All Usage Examples Of CSharpUML.VSParser::Parse