Inheritance: IParser
Beispiel #1
0
        public UmlEnum(Tag tag)
            : base(tag)
        {
            name = tag.Params ["name"];

            tag.Content = tag.Content.Replace(" = ", "=");
            Tag[] literalTags = VSParser.ExtractTags(ref tag.Content, "enumerationLiteral");

            List <string> literals = new List <string> ();

            foreach (Tag literalTag in literalTags)
            {
                if (literalTag.Params.ContainsKey("name"))
                {
                    literals.Add(literalTag.Params ["name"]);
                }
                else
                {
                    Console.WriteLine("weird: " + literalTag.Content);
                }
            }
            values = literals.ToArray();

            commentsKey = Comments.Key(name);
            Packages.AddToCurrentPackage(name);
        }
Beispiel #2
0
        public UmlMethod(Tag tag, UmlClass classobj)
            : base(tag)
        {
            Tag[] paramtags = VSParser.ExtractTags(ref tag.Content, "parameter");

            returntype = "void";

            List <string> parameterlist = new List <string> ();

            foreach (Tag proptag in paramtags)
            {
                string type = proptag.ParseType();
                if (proptag.Params.ContainsKey("direction") && proptag.Params ["direction"].ToLower() == "return")
                {
                    returntype = type;
                }
                else
                {
                    if (type == "void")
                    {
                        parameterlist.Add(proptag.Name);
                    }
                    else
                    {
                        parameterlist.Add(type + " " + proptag.Name);
                    }
                }
            }
            parameters = parameterlist.ToArray();

            commentsKey = Comments.Key(classobj.Name, name, parameters.Unique() + returntype);
        }
Beispiel #3
0
        public UmlClass(Tag classtag)
            : base(classtag)
        {
            if (classtag.Tagname == "interface")
            {
                type = ClassType.Interface;
            }
            else
            {
                type = ClassType.Class;
            }

            Content   = ParseContent(classtag).ToArray();
            Publicity = Publicity.Public;

            List <string> _bases = new List <string> ();

            Tag[] baseclasses = VSParser.ExtractTags(ref classtag.Content, "generalization");
            foreach (Tag baseclass in baseclasses)
            {
                _bases.Add(baseclass.ParseType());
            }
            Tag[] baseinterfaces = VSParser.ExtractTags(ref classtag.Content, "interfaceRealization");
            Console.WriteLine("interfaceRealization: " + name + ": " + classtag.Content);
            foreach (Tag baseinterface in baseinterfaces)
            {
                Console.WriteLine("interfaceRealization: " + name + " <- " + baseinterface.Content);
                _bases.Add(baseinterface.ParseType());
            }

            bases = _bases.ToArray();

            commentsKey = Comments.Key(name);
            Packages.AddToCurrentPackage(name);
        }
Beispiel #4
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!");
            }
        }
Beispiel #5
0
        public IEnumerable <IUmlObject> ParseContent(Tag classtag)
        {
            Tag[] proptags = VSParser.ExtractTags(ref classtag.Content, "property");

            foreach (Tag proptag in proptags)
            {
                yield return(new UmlAttribute(proptag, this));
            }

            Tag[] methtags = VSParser.ExtractTags(ref classtag.Content, "operation");

            foreach (Tag methtag in methtags)
            {
                yield return(new UmlMethod(methtag, this));
            }
        }
Beispiel #6
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!");
            }
        }