X-Git-Url: http://nitlanguage.org diff --git a/src/uml/uml_class.nit b/src/uml/uml_class.nit index 205297f..92317a4 100644 --- a/src/uml/uml_class.nit +++ b/src/uml/uml_class.nit @@ -16,10 +16,11 @@ module uml_class import uml_base +import model::model_collect redef class UMLModel # Generates a UML class diagram from a `Model` - fun generate_class_uml: Streamable do + fun generate_class_uml: Writable do var tpl = new Template tpl.add "digraph G \{\n" tpl.add """ fontname = "Bitstream Vera Sans" @@ -43,7 +44,7 @@ end redef class Model # Generates a UML Class diagram from the entities of a `Model` - fun tpl_class(ctx: ToolContext, main: MModule): Streamable do + fun tpl_class(ctx: ToolContext, main: MModule): Writable do var t = new Template for i in mclasses do if not ctx.private_gen and i.visibility != public_visibility then continue @@ -56,13 +57,13 @@ redef class Model end redef class MEntity - # Generates a dot-compatible `Streamable` UML Class diagram from `self` - fun tpl_class(ctx: ToolContext, main: MModule): Streamable is abstract + # Generates a dot-compatible `Writable` UML Class diagram from `self` + fun tpl_class(ctx: ToolContext, main: MModule): Writable is abstract end redef class MClass - redef fun tpl_class(ctx, main): Streamable do + redef fun tpl_class(ctx, main) do var t = new Template t.add "{name} [\n label = \"\{" if kind == abstract_kind then @@ -84,9 +85,9 @@ redef class MClass t.add "|" var props: Collection[MProperty] if ctx.private_gen then - props = intro_mproperties(none_visibility) + props = collect_intro_mproperties(none_visibility) else - props = intro_mproperties(public_visibility) + props = collect_intro_mproperties(public_visibility) end for i in props do if i isa MAttribute then @@ -95,8 +96,13 @@ redef class MClass end end t.add "|" - for i in intro_methods do - if not ctx.private_gen and i.visibility != public_visibility then continue + var meths + if ctx.private_gen then + meths = collect_intro_mmethods(none_visibility) + else + meths = collect_intro_mmethods(public_visibility) + end + for i in meths do t.add i.tpl_class(ctx, main) t.add "\\l" end @@ -174,7 +180,7 @@ redef class MVisibility # # assert public_visibility.tpl_class == "+" # assert private_visibility.tpl_class == "-" - fun tpl_class: Streamable do + fun tpl_class: Writable do if self == private_visibility then return "-" else if self == protected_visibility then