model_views: expect a mainmodule
[nit.git] / src / model / model_views.nit
index 3a88f45..049dea0 100644 (file)
@@ -28,6 +28,9 @@ class ModelView
        # The model to view through `self`.
        var model: Model
 
+       # MModule used to flatten mclass hierarchy
+       var mainmodule: MModule
+
        # MPackages visible through `self`.
        var mpackages: Set[MPackage] is lazy do
                var mpackages = new HashSet[MPackage]
@@ -122,28 +125,15 @@ class ModelView
                v.include_fictive = self.include_fictive
                v.include_empty_doc = self.include_empty_doc
                v.include_attribute = self.include_attribute
-               v.include_test_suite = self.include_test_suite
+               v.include_test = self.include_test
        end
 
-       # Searches MEntities that match `name`.
-       fun mentities_by_name(name: String): Array[MEntity] do
-               var res = new Array[MEntity]
-               for mentity in mentities do if mentity.name == name then res.add mentity
-               return res
-       end
-
-       # Looks up a MEntity by its full `namespace`.
-       #
-       # Usefull when `mentities_by_name` returns conflicts.
-       #
-       # Namespaces must be of the form `package::core::module::Class::prop`.
-       fun mentities_by_namespace(namespace: String): Array[MEntity] do
-               var v = new LookupNamespaceVisitor(namespace)
-               init_visitor(v)
-               for mpackage in mpackages do
-                       v.enter_visit(mpackage)
+       # Searches the MEntity that matches `full_name`.
+       fun mentity_by_full_name(full_name: String): nullable MEntity do
+               for mentity in mentities do
+                       if mentity.full_name == full_name then return mentity
                end
-               return v.results
+               return null
        end
 
        # Build an concerns tree with from `self`
@@ -155,6 +145,16 @@ class ModelView
                end
                return v.tree
        end
+
+       # Build the POSet of `mmodules` importation.
+       fun mmodules_poset(mmodules: Set[MModule]): POSet[MModule] do
+               return model.mmodule_importation_hierarchy.sub(mmodules)
+       end
+
+       # Build the POSet of `mclasses` hierarchy.
+       fun mclasses_poset(mainmodule: MModule, mclasses: Set[MClass]): POSet[MClass] do
+               return mainmodule.flatten_mclass_hierarchy.sub(mclasses)
+       end
 end
 
 class LookupNamespaceVisitor
@@ -179,27 +179,6 @@ end
 
 redef class MEntity
 
-       # Get a public view of the model
-       fun public_view: ModelView do
-               var view = new ModelView(self.model)
-               view.min_visibility = public_visibility
-               return view
-       end
-
-       # Get a public view of the model
-       fun protected_view: ModelView do
-               var view = new ModelView(self.model)
-               view.min_visibility = protected_visibility
-               return view
-       end
-
-       # Get a public view of the model
-       fun private_view: ModelView do
-               var view = new ModelView(self.model)
-               view.min_visibility = private_visibility
-               return view
-       end
-
        private fun accept_namespace_visitor(v: LookupNamespaceVisitor) do
                if v.parts.is_empty then return
                if name != v.parts.first then return