private void ProcessList(IEnumerable <Type> types, UmlPackageName usePackageOnly) { foreach (var srcType in types) { var type = srcType.MeOrGeneric(); if (!ContainsType(type)) { continue; } if (_state.ProcessedTypes.Contains(type) || _state.ProcessedTypes.Contains(srcType)) { continue; } if (!_entities.TryGetValue(type, out var entity)) { continue; } var entityPackageName = GetPackageName(entity); if (usePackageOnly != entityPackageName) { continue; } if (entityPackageName.IsEmpty) { PackageClose(); } else { if (_state.IsPackageOpen && _state.PackageName == entityPackageName) { } else { if (!Packages.TryGetValue(entityPackageName, out var package)) { package = new UmlPackage(); } _state.UsedPackages[entityPackageName] = package; PackageOpen(entityPackageName, package.Kind.ToString()); // OpenPackage(entityPackageName, ); } } _state.ProcessedTypes.Add(type); _state.ProcessedTypes.Add(srcType); AddToFile(type); } }
private void PackageOpen(UmlPackageName pn, string kind) { if (_state.PackageName == pn) { return; } PackageClose(); if (pn.IsEmpty) { return; } var text = $"package {pn.Name.AddQuotesIfNecessary()} <<{kind}>>"; _state.File.Classes.OpenSameLine(text); _state.PackageName = pn; }
public void Visit(Assembly assembly, UmlDiagram diagram) { var packages = diagram.Packages; foreach (var attribute in assembly.GetCustomAttributes <UmlPackageStyleAttribute>()) { if (!attribute.CanBeUsedFor(diagram)) { continue; } var umlPackageName = new UmlPackageName(attribute.PackageName); if (!packages.TryGetValue(umlPackageName, out var x)) { packages[umlPackageName] = x = new UmlPackage(); } x.Kind = attribute.Kind; } }