model/model_viz: use OrderedTree[MConcern]
[nit.git] / src / nitdoc.nit
index dd7948d..bda79e7 100644 (file)
@@ -19,10 +19,19 @@ module nitdoc
 
 import modelbuilder
 import doc
+import counter
 
 redef class ToolContext
        # Nitdoc generation phase.
        var docphase: Phase = new Nitdoc(self, null)
+
+       # File pattern used to link documentation to source code.
+       var opt_test = new OptionBool("do not render anything, only print test data", "--test")
+
+       redef init do
+               super
+               option_context.add_option(opt_test)
+       end
 end
 
 # Nitdoc phase explores the model and generate pages for each mentities found
@@ -34,12 +43,46 @@ private class Nitdoc
 
                var phases = [
                        new ExtractionPhase(toolcontext, doc),
-                       new MakePagePhase(toolcontext, doc): DocPhase]
+                       new IndexingPhase(toolcontext, doc),
+                       new MakePagePhase(toolcontext, doc),
+                       new POSetPhase(toolcontext, doc),
+                       new ConcernsPhase(toolcontext, doc),
+                       new StructurePhase(toolcontext, doc),
+                       new InheritanceListsPhase(toolcontext, doc),
+                       new IntroRedefListPhase(toolcontext, doc),
+                       new LinListPhase(toolcontext, doc),
+                       new GraphPhase(toolcontext, doc),
+                       new ReadmePhase(toolcontext, doc): DocPhase]
+
+               if not toolcontext.opt_test.value then
+                       phases.add new RenderHTMLPhase(toolcontext, doc)
+               end
 
                for phase in phases do
                        toolcontext.info("# {phase.class_name}", 1)
                        phase.apply
                end
+
+               if toolcontext.opt_test.value then
+                       # Pages metrics
+                       var page_counter = new Counter[String]
+                       var pages = doc.pages.keys.to_a
+                       default_comparator.sort(pages)
+                       for title in pages do
+                               var page = doc.pages[title]
+                               page_counter.inc page.class_name
+                               print page.pretty_print.write_to_string
+                       end
+                       print "Generated {doc.pages.length} pages"
+                       page_counter.print_elements(100)
+                       # Model metrics
+                       var model_counter = new Counter[String]
+                       for mentity in doc.mentities do
+                               model_counter.inc mentity.class_name
+                       end
+                       print "Found {doc.mentities.length} mentities"
+                       model_counter.print_elements(100)
+               end
        end
 end