super ModelVisitor
redef fun visit(e) do
- if not doc_only or e.mdoc != null then
- cpt.inc(e.class_name)
+ 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]
- # Do the visitor only count entities with a documentation?
- var doc_only = false
+ # Dictionary of full_names
+ var names = new Map[String, MEntity]
end
# The body of the specific work.
do
var model = modelbuilder.model
+ print "All entities, including fictive ones:"
+ 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:"
- var v = new TestModelVisitor
+ 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.doc_only = true
+ 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:"
+ filters = new ModelFilter(public_visibility)
+ v = new TestModelVisitor(filters)
+ v.enter_visit(model)
+ v.cpt.print_elements(10)
+
+ print "\nAll documented public entities:"
+ 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