X-Git-Url: http://nitlanguage.org diff --git a/src/model/mproject.nit b/src/model/mproject.nit index 72f2114..283d54c 100644 --- a/src/model/mproject.nit +++ b/src/model/mproject.nit @@ -18,14 +18,19 @@ module mproject import model_base private import more_collections import poset +import mdoc -# A Nit project, thas encompass a product +# A Nit project, that encompass a product class MProject super MConcern # The name of the project redef var name: String + redef fun full_name do return name + + redef var c_name = name.to_cmangle is lazy + # The model of the project redef var model: Model @@ -37,16 +42,20 @@ class MProject redef fun to_s do return name - init(name: String, model: Model) + init do - self.name = name - self.model = model model.mprojects.add(self) model.mproject_by_name.add_one(name, self) end # MProject are always roots of the concerns hierarchy redef fun parent_concern do return null + + redef fun mdoc_or_fallback + do + if mdoc != null then return mdoc + return root.mdoc_or_fallback + end end # A group of modules in a project @@ -57,15 +66,16 @@ class MGroup # empty name for a default group in a single-module project redef var name: String - # The englobing project + # The enclosing project var mproject: MProject # The parent group if any # see `in_nesting` for more var parent: nullable MGroup - # fully qualified name - fun full_name: String + # Fully qualified name. + # It includes each parent group separated by `/` + redef fun full_name do var p = parent if p == null then return name @@ -73,23 +83,21 @@ class MGroup end # The group is the group tree on the project (`mproject.mgroups`) - # nested groups (children) are smallers + # nested groups (children) are smaller # nesting group (see `parent`) is bigger - var in_nesting: POSetElement[MGroup] + var in_nesting: POSetElement[MGroup] is noinit # Is `self` the root of its project? fun is_root: Bool do return mproject.root == self - # The filepath (usualy a directory) of the group, if any - var filepath: nullable String is writable + # The filepath (usually a directory) of the group, if any + var filepath: nullable String = null is writable - init (name: String, mproject: MProject, parent: nullable MGroup) + init do - self.name = name - self.mproject = mproject - self.parent = parent var tree = mproject.mgroups self.in_nesting = tree.add_node(self) + var parent = self.parent if parent != null then tree.add_edge(self, parent) end @@ -110,7 +118,7 @@ redef class Model var mprojects = new Array[MProject] # Collections of project grouped by their names - private var mproject_by_name: MultiHashMap[String, MProject] = new MultiHashMap[String, MProject] + private var mproject_by_name = new MultiHashMap[String, MProject] # Return all project named `name` # If such a project is not yet loaded, null is returned (instead of an empty array)