public static ClassSelector Get(Type @class, ClassInclude defaultClassInclude = ClassInclude.None) { ClassSelector classSelector = new ClassSelector(defaultClassInclude); classSelector.AddRange(@class.GetCustomAttributes(false).OfType <ClassDiagramAttribute>()); return(classSelector); }
public virtual void Process(Type @class, TPrinter printer) { // NOTE: CHANGE IT!!! AssemblySelector selector = AssemblySelector.Get(@class.Assembly); ClassInclude defaultClassInclude = selector.GetClassInclude(@class, printer.Diagram); ClassSelector classSelector = ClassSelector.Get(@class, defaultClassInclude); printer.BeginClass(ModelUtils.ToClassType(@class), PlantUmlUtils.GetSimpleName(@class), PlantUmlUtils.GetGenerics(@class), PlantUmlUtils.GetStereotypes(@class)?.ToArray()); this.ProcessMembersIfChecked(classSelector, ModelUtils.GetConstructors(@class), printer); this.ProcessMembersIfChecked(classSelector, ModelUtils.GetMethods(@class), printer); this.ProcessMembersIfChecked(classSelector, ModelUtils.GetProperties(@class), printer); this.ProcessMembersIfChecked(classSelector, ModelUtils.GetEvents(@class), printer); this.ProcessMembersIfChecked(classSelector, ModelUtils.GetFields(@class), printer); printer.EndClass(); //this.ProcessNestedIfChecked(classSelector, ModelUtils.GetNestedTypes(@class), printer); this.ProcessMembersIfChecked(classSelector, ModelUtils.GetGeneralizations(@class), printer); this.ProcessMembersIfChecked(classSelector, ModelUtils.GetAssociations(@class), printer); this.ProcessMembersIfChecked(classSelector, ModelUtils.GetDependencies(@class), printer); }
public ClassInclude GetClassInclude(Type type, string diagram) { // Checks the namespace of 'type' and the 'diagram' against the 'selector'. bool CheckNamespaceAndDiagram(Selector selector) { return(selector.NamespaceSelector.Select(type.Namespace) && selector.DiagramSelector.Select(diagram)); } // Filtered selectors. IEnumerable <Selector> filtered = this.selectors .Where(CheckNamespaceAndDiagram); // Concatenates all class permissions related to the namespace of 'type' for the 'diagram'. ClassInclude classInclude = filtered.Aggregate(ClassInclude.None, (acc, selector) => acc | selector.DefaultClassInclude); return(classInclude); }
public ClassInclude GetClassInclude(string diagram) { // Checks the 'diagram' against the 'selector'. bool CheckDiagram(Selector selector) { return(selector.DiagramSelector.Select(diagram)); } // Filtered selectors (cache). IEnumerable <Selector> filtered = this.selectors .Where(CheckDiagram) .ToArray(); // If there is no selector, it uses the default behaviour. if (!filtered.Any()) { return(this.defaultClassInclude); } // Concatenates all class permissions for the 'diagram'. ClassInclude classInclude = filtered.Aggregate(ClassInclude.None, (acc, selector) => acc | selector.Include); return(classInclude); }
private ClassSelector(ClassInclude defaultClassInclude = ClassInclude.None) { this.defaultClassInclude = defaultClassInclude; }
public static bool Check(this ClassInclude flags, object o) { return(flags.DecomposeFlag().Any(flag => fastMemberCheck[flag](o))); }