loader: `MModule::load` cause build_module_importation
[nit.git] / src / nitdoc.nit
index 7c1dd33..bda79e7 100644 (file)
@@ -19,10 +19,19 @@ module nitdoc
 
 import modelbuilder
 import doc
 
 import modelbuilder
 import doc
+import counter
 
 redef class ToolContext
        # Nitdoc generation phase.
        var docphase: Phase = new Nitdoc(self, null)
 
 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
 end
 
 # Nitdoc phase explores the model and generate pages for each mentities found
@@ -34,18 +43,46 @@ private class Nitdoc
 
                var phases = [
                        new ExtractionPhase(toolcontext, doc),
 
                var phases = [
                        new ExtractionPhase(toolcontext, doc),
+                       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 MakePagePhase(toolcontext, doc),
                        new POSetPhase(toolcontext, doc),
                        new ConcernsPhase(toolcontext, doc),
                        new StructurePhase(toolcontext, doc),
                        new InheritanceListsPhase(toolcontext, doc),
                        new IntroRedefListPhase(toolcontext, doc),
-                       new GraphPhase(toolcontext, doc): DocPhase]
+                       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
 
                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
 
        end
 end