ni_nitdoc: Get all classes of a module
authorStefan Lage <lagestfan@gmail.com>
Fri, 28 Jun 2013 14:51:28 +0000 (10:51 -0400)
committerStefan Lage <lagestfan@gmail.com>
Wed, 3 Jul 2013 20:54:23 +0000 (16:54 -0400)
Addign a function to regroup all classes of a module and it associate
their state like introduced or refined

Signed-off-by: Stefan Lage <lagestfan@gmail.com>

src/model_utils.nit
src/ni_nitdoc.nit

index ebf154a..df90150 100644 (file)
@@ -39,6 +39,15 @@ redef class MModule
                end
                return mclasses
        end
+
+       # Get all mclasses in 'self' with their state
+       fun mclasses: HashMap[MClass, Int] do
+               var mclasses = new HashMap[MClass, Int]
+               for c in intro_mclasses do mclasses[c] = c_is_intro
+               for r in redef_mclasses do mclasses[r] = c_is_refined
+               for i in imported_mclasses do mclasses[i] = c_is_imported
+               return mclasses
+       end
 end
 
 redef class MClass
@@ -187,3 +196,8 @@ redef class MClass
                return self.kind == abstract_kind
        end
 end
+
+# MClass State
+fun c_is_intro: Int do return 1
+fun c_is_refined: Int do return 2
+fun c_is_imported: Int do return 3
index 3cd48da..ee6953f 100644 (file)
@@ -488,6 +488,28 @@ class NitdocModules
                close("div")
        end
 
+       fun add_classes do
+               open("div").add_class("module")
+               open("article").add_class("classes filterable")
+               add("h2").text("Classes")
+               open("ul")
+               for c, state in amodule.mmodule.mclasses do
+                       var name = c.name
+                       if state == c_is_intro or state == c_is_imported then
+                               open("li").add_class("intro")
+                               add("span").attr("title", "introduced in this module").text("I ")
+                       else
+                               open("li").add_class("redef")
+                               add("span").attr("title", "refined in this module").text("R ")
+                       end
+                       add("a").attr("href", "{name}.html").text(name)
+                       close("li")
+               end
+               close("ul")
+               close("article")
+               close("div")
+       end
+
 end
 
 class NitdocPage