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