Merge: Ropes
[nit.git] / src / doc / doc_pages.nit
index 71c73f6..4ebd217 100644 (file)
@@ -86,15 +86,9 @@ end
 
 # The Nitdoc class explores the model and generate pages for each mentities found
 class Nitdoc
+       var ctx: ToolContext
        var model: Model
        var mainmodule: MModule
-       var ctx: ToolContext
-
-       init(ctx: ToolContext, model: Model, mainmodule: MModule) do
-               self.ctx = ctx
-               self.model = model
-               self.mainmodule = mainmodule
-       end
 
        fun generate do
                init_output_dir
@@ -115,11 +109,7 @@ class Nitdoc
                var sharedir = ctx.opt_sharedir.value
                if sharedir == null then
                        var dir = ctx.nit_dir
-                       if dir == null then
-                               print "Error: Cannot locate nitdoc share files. Uses --sharedir or envvar NIT_DIR"
-                               abort
-                       end
-                       sharedir = "{dir}/share/nitdoc"
+                       sharedir = dir/"share/nitdoc"
                        if not sharedir.file_exists then
                                print "Error: Cannot locate nitdoc share files. Uses --sharedir or envvar NIT_DIR"
                                abort
@@ -196,7 +186,10 @@ class QuickSearch
        private var mclasses = new HashSet[MClass]
        private var mpropdefs = new HashMap[String, Set[MPropDef]]
 
-       init(ctx: ToolContext, model: Model) do
+       var ctx: ToolContext
+       var model: Model
+
+       init do
                for mmodule in model.mmodules do
                        if mmodule.is_fictive then continue
                        mmodules.add mmodule
@@ -253,12 +246,6 @@ abstract class NitdocPage
        private var mainmodule: MModule
        private var name_sorter = new MEntityNameSorter
 
-       init(ctx: ToolContext, model: Model, mainmodule: MModule) do
-               self.ctx = ctx
-               self.model = model
-               self.mainmodule = mainmodule
-       end
-
        # Render the page as a html template
        fun render: Template do
                var shareurl = "."
@@ -673,13 +660,11 @@ class NitdocGroup
 
        private var mgroup: MGroup
 
-       private var concerns: ConcernsTree
-       private var intros: Set[MClass]
-       private var redefs: Set[MClass]
+       private var concerns: ConcernsTree is noinit
+       private var intros: Set[MClass] is noinit
+       private var redefs: Set[MClass] is noinit
 
-       init(ctx: ToolContext, model: Model, mainmodule: MModule, mgroup: MGroup) do
-               super
-               self.mgroup = mgroup
+       init do
                self.concerns = model.concerns_tree(mgroup.collect_mmodules)
                self.concerns.sort_with(new MConcernRankSorter)
                self.intros = mgroup.in_nesting_intro_mclasses(ctx.min_visibility)
@@ -800,14 +785,12 @@ class NitdocModule
        super NitdocPage
 
        private var mmodule: MModule
-       private var concerns: ConcernsTree
-       private var mclasses2mdefs: Map[MClass, Set[MClassDef]]
-       private var mmodules2mclasses: Map[MModule, Set[MClass]]
+       private var concerns: ConcernsTree is noinit
+       private var mclasses2mdefs: Map[MClass, Set[MClassDef]] is noinit
+       private var mmodules2mclasses: Map[MModule, Set[MClass]] is noinit
 
 
-       init(ctx: ToolContext, model: Model, mainmodule: MModule, mmodule: MModule) do
-               super
-               self.mmodule = mmodule
+       init do
                var mclassdefs = new HashSet[MClassDef]
                mclassdefs.add_all mmodule.intro_mclassdefs(ctx.min_visibility)
                mclassdefs.add_all mmodule.redef_mclassdefs(ctx.min_visibility)
@@ -1010,7 +993,7 @@ class NitdocModule
                end
                # build graph
                var op = new RopeBuffer
-               var name = "dep_{mmodule.name}"
+               var name = "dep_module_{mmodule.nitdoc_id}"
                op.append("digraph {name} \{ rankdir=BT; node[shape=none,margin=0,width=0,height=0,fontsize=10]; edge[dir=none,color=gray]; ranksep=0.2; nodesep=0.1;\n")
                for mmodule in poset do
                        if mmodule == self.mmodule then
@@ -1043,13 +1026,11 @@ class NitdocClass
        super NitdocPage
 
        private var mclass: MClass
-       private var concerns: ConcernsTree
-       private var mprops2mdefs: Map[MProperty, Set[MPropDef]]
-       private var mmodules2mprops: Map[MModule, Set[MProperty]]
+       private var concerns: ConcernsTree is noinit
+       private var mprops2mdefs: Map[MProperty, Set[MPropDef]] is noinit
+       private var mmodules2mprops: Map[MModule, Set[MProperty]] is noinit
 
-       init(ctx: ToolContext, model: Model, mainmodule: MModule, mclass: MClass) do
-               super
-               self.mclass = mclass
+       init do
                var mpropdefs = new HashSet[MPropDef]
                mpropdefs.add_all mclass.intro_mpropdefs(ctx.min_visibility)
                mpropdefs.add_all mclass.redef_mpropdefs(ctx.min_visibility)
@@ -1393,7 +1374,7 @@ class NitdocClass
                end
 
                var op = new RopeBuffer
-               var name = "dep_{mclass.name}"
+               var name = "dep_class_{mclass.nitdoc_id}"
                op.append("digraph {name} \{ rankdir=BT; node[shape=none,margin=0,width=0,height=0,fontsize=10]; edge[dir=none,color=gray]; ranksep=0.2; nodesep=0.1;\n")
                var classes = poset.to_a
                var todo = new Array[MClass]
@@ -1429,11 +1410,10 @@ class NitdocProperty
        super NitdocPage
 
        private var mproperty: MProperty
-       private var concerns: ConcernsTree
-       private var mmodules2mdefs: Map[MModule, Set[MPropDef]]
+       private var concerns: ConcernsTree is noinit
+       private var mmodules2mdefs: Map[MModule, Set[MPropDef]] is noinit
 
-       init(ctx: ToolContext, model: Model, mainmodule: MModule, mproperty: MProperty) do
-               super
+       init do
                self.mproperty = mproperty
                self.mmodules2mdefs = sort_by_mmodule(collect_mpropdefs)
                self.concerns = model.concerns_tree(mmodules2mdefs.keys)