src: mass rename project->package
[nit.git] / src / metrics / model_hyperdoc.nit
index 0e66ba4..ed91198 100644 (file)
 # Dump of Nit model into hypertext human-readable format.
 module model_hyperdoc
 
-import model
 import metrics_base
-import phase
-import frontend
 
 redef class ToolContext
-       var model_hyperdoc_phase = new ModelHyperdocPhase(self, null)
+       var model_hyperdoc_phase: Phase = new ModelHyperdocPhase(self, null)
 end
 
 private class ModelHyperdocPhase
        super Phase
-       redef fun process_mainmodule(mainmodule)
+       redef fun process_mainmodule(mainmodule, given_mmodules)
        do
                if not toolcontext.opt_generate_hyperdoc.value and not toolcontext.opt_all.value then return
                generate_model_hyperdoc(toolcontext, toolcontext.modelbuilder.model)
@@ -39,21 +36,54 @@ end
 # The generated file contains the description of each entity of the model
 fun generate_model_hyperdoc(toolcontext: ToolContext, model: Model)
 do
-       var buf = new Buffer
+       var buf = new FlatBuffer
        buf.append("<html>\n<body>\n")
        buf.append("<h1>Model</h1>\n")
 
+       buf.append("<h2>Packages</h2>\n")
+       for mpackage in model.mpackages do
+               buf.append("<h3 id='package-{mpackage}'>Package {mpackage}</h3>\n")
+               buf.append("<dl>\n")
+               buf.append("<dt>groups</dt>\n")
+               for x in mpackage.mgroups do
+                       buf.append("<dd>{linkto(x)}</dd>\n")
+               end
+               buf.append("</dl>\n")
+       end
+
+       buf.append("<h2>Groups</h2>\n")
+       for mpackage in model.mpackages do
+               for mgroup in mpackage.mgroups do
+                       buf.append("<h3 id='group-{mgroup}'>Group {mgroup}</h3>\n")
+                       buf.append("<dl>\n")
+                       buf.append("<dt>package</dt>\n")
+                       buf.append("<dd>{linkto(mpackage)}</dd>\n")
+                       buf.append("<dt>filepath</dt>\n")
+                       buf.append("<dd>{mgroup.filepath.to_s}</dd>\n")
+                       var p = mgroup.parent
+                       if p != null then
+                               buf.append("<dt>parent group</dt>\n")
+                               buf.append("<dd>{linkto(p)}</dd>\n")
+                       end
+                       buf.append("<dt>nested groups</dt>\n")
+                       for x in mgroup.in_nesting.direct_smallers do
+                               buf.append("<dd>{linkto(x)}</dd>\n")
+                       end
+                       buf.append("<dt>modules</dt>\n")
+                       for x in mgroup.mmodules do
+                               buf.append("<dd>{linkto(x)}</dd>\n")
+                       end
+               end
+               buf.append("</dl>\n")
+       end
+
        buf.append("<h2>Modules</h2>\n")
        for mmodule in model.mmodules do
                buf.append("<h3 id='module-{mmodule}'>{mmodule}</h3>\n")
                buf.append("<dl>\n")
-               buf.append("<dt>direct owner</dt>\n")
-               var own = mmodule.direct_owner
-               if own != null then buf.append("<dd>{linkto(own)}</dd>\n")
-               buf.append("<dt>nested</dt>\n")
-               for x in mmodule.in_nesting.direct_greaters do
-                       buf.append("<dd>{linkto(x)}</dd>\n")
-               end
+               buf.append("<dt>group</dt>\n")
+               var grp = mmodule.mgroup
+               if grp != null then buf.append("<dd>{linkto(grp)}</dd>\n")
                buf.append("<dt>direct import</dt>\n")
                for x in mmodule.in_importation.direct_greaters do
                        buf.append("<dd>{linkto(x)}</dd>\n")
@@ -156,14 +186,18 @@ do
                end
        end
        buf.append("</body></html>\n")
-       var f = new OFStream.open(toolcontext.output_dir.join_path("model.html"))
+       var f = new FileWriter.open(toolcontext.output_dir.join_path("model.html"))
        f.write(buf.to_s)
        f.close
 end
 
 private fun linkto(o: Object): String
 do
-       if o isa MModule then
+       if o isa MPackage then
+               return "<a href='#package-{o}'>{o}</a>"
+       else if o isa MGroup then
+               return "<a href='#group-{o}'>{o}</a>"
+       else if o isa MModule then
                return "<a href='#module-{o}'>{o}</a>"
        else if o isa MClass then
                return "<a href='#class-{o}'>{o}</a>"