X-Git-Url: http://nitlanguage.org diff --git a/src/test_model_visitor.nit b/src/test_model_visitor.nit index 3569400..9596132 100644 --- a/src/test_model_visitor.nit +++ b/src/test_model_visitor.nit @@ -26,11 +26,25 @@ class TestModelVisitor redef fun visit(e) do cpt.inc(e.class_name) + + if not e isa Model then + var name = e.full_name + var old = names.get_or_null(name) + if old != null then + names[name + "!CONFLICT!" + old.class_name] = old + name = name + "!CONFLICT!" + e.class_name + end + names[name] = e + end + e.visit_all(self) end # Counter of visited entities (by classnames) var cpt = new Counter[String] + + # Dictionary of full_names + var names = new Map[String, MEntity] end # The body of the specific work. @@ -41,42 +55,65 @@ do var model = modelbuilder.model print "All entities, including fictive ones:" - var v = new TestModelVisitor - v.min_visibility = private_visibility - v.include_fictive = true + var filters = new ModelFilter(private_visibility, accept_fictive = true) + var v = new TestModelVisitor(filters) v.enter_visit(model) v.cpt.print_elements(10) + var names = v.names print "All entities:" - v = new TestModelVisitor - v.min_visibility = private_visibility + filters = new ModelFilter(private_visibility) + v = new TestModelVisitor(filters) v.enter_visit(model) v.cpt.print_elements(10) print "\nAll non-private entities:" - v = new TestModelVisitor - v.min_visibility = protected_visibility + filters = new ModelFilter(protected_visibility) + v = new TestModelVisitor(filters) v.enter_visit(model) v.cpt.print_elements(10) print "\nAll documented non-private entities:" - v = new TestModelVisitor - v.min_visibility = protected_visibility - v.include_empty_doc = false + filters = new ModelFilter(protected_visibility, accept_empty_doc = false) + v = new TestModelVisitor(filters) v.enter_visit(model) v.cpt.print_elements(10) print "\nAll public entities:" - v = new TestModelVisitor - v.min_visibility = public_visibility + filters = new ModelFilter(public_visibility) + v = new TestModelVisitor(filters) v.enter_visit(model) v.cpt.print_elements(10) print "\nAll documented public entities:" - v = new TestModelVisitor - v.min_visibility = public_visibility - v.include_empty_doc = false + filters = new ModelFilter(public_visibility, accept_empty_doc = false) + v = new TestModelVisitor(filters) v.enter_visit(model) v.cpt.print_elements(10) + print "\nNames:" + print "\n# Classes of entities" + var cpt + cpt = new Counter[String] + for n, e in names do + cpt.inc(e.class_name) + end + cpt.print_summary + cpt.print_elements(10) + + print "\n# Name length of entities" + cpt = new Counter[String] + for n, e in names do + cpt[n] = n.length + end + cpt.print_summary + cpt.print_elements(10) + + print "\n# All entities" + for n, e in names do + var c = "" + var d = e.mdoc_or_fallback + if d != null and d.content.not_empty then c = d.content.first + print "{n}\t{e.class_name}\t{e.location}\t{c}" + end end