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); }
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); }
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); }
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!"); } }
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)); } }
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!"); } }