+redef class ToolContext
+ # Nitdoc generation phase.
+ var docphase: Phase = new Nitdoc(self, null)
+
+ init do super # to fix ambiguous linearization
+end
+
+# Nitdoc phase explores the model and generate pages for each mentities found
+private class Nitdoc
+ super Phase
+ redef fun process_mainmodule(mainmodule, mmodules)
+ do
+ var doc = new DocModel(mainmodule.model, mainmodule)
+
+ 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 LinListPhase(toolcontext, doc),
+ new GraphPhase(toolcontext, doc),
+ new ReadmePhase(toolcontext, doc),
+ new RenderHTMLPhase(toolcontext, doc),
+ new DocTestPhase(toolcontext, doc): DocPhase]
+
+ for phase in phases do
+ toolcontext.info("# {phase.class_name}", 1)
+ phase.apply
+ end
+ end
+end
+
+# build toolcontext