ni: replaced Comparable sorters with specific sorters introduced in model_utils
authorAlexandre Terrasa <alexandre@moz-code.org>
Mon, 29 Jul 2013 15:16:58 +0000 (11:16 -0400)
committerAlexandre Terrasa <alexandre@moz-code.org>
Mon, 29 Jul 2013 15:16:58 +0000 (11:16 -0400)
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>

src/model_utils.nit
src/ni.nit
src/ni_nitdoc.nit

index 8970316..7bb9d2f 100644 (file)
@@ -228,4 +228,34 @@ redef class MClass
        fun is_abstract: Bool do
                return self.kind == abstract_kind
        end
-end
\ No newline at end of file
+end
+
+# Sorters
+
+# Sort mmodules by their name
+class MModuleNameSorter
+       super AbstractSorter[MModule]
+       redef fun compare(a, b) do return a.name <=> b.name
+       init do end
+end
+
+# Sort mclasses by their name
+class MClassNameSorter
+       super AbstractSorter[MClass]
+       redef fun compare(a, b) do return a.name <=> b.name
+       init do end
+end
+
+# Sort mproperties by their name
+class MPropertyNameSorter
+       super AbstractSorter[MProperty]
+       redef fun compare(a, b) do return a.name <=> b.name
+       init do end
+end
+
+# Sort mpropdefs by their name
+class MPropDefNameSorter
+       super AbstractSorter[MPropDef]
+       redef fun compare(a, b) do return a.mproperty.name <=> b.mproperty.name
+       init do end
+end
index bf98a6c..cf14e27 100644 (file)
@@ -161,7 +161,7 @@ class NitIndex
                                        #sort list
                                        var sorted = new Array[MClass]
                                        sorted.add_all(list)
-                                       var sorter = new ComparableSorter[MClass]
+                                       var sorter = new MClassNameSorter
                                        sorter.sort(sorted)
                                        for mclass in sorted do
                                                var nclass = mbuilder.mclassdef2nclassdef[mclass.intro].as(AStdClassdef)
@@ -227,7 +227,7 @@ class NitIndex
                                        #sort list
                                        var sorted = new Array[MMethod]
                                        sorted.add_all(list)
-                                       var sorter = new ComparableSorter[MMethod]
+                                       var sorter = new MPropertyNameSorter
                                        sorter.sort(sorted)
                                        pager.add("\n# {cat}".bold)
                                        for mprop in sorted do
@@ -253,7 +253,7 @@ class NitIndex
                        cats[mclass].add(mprop)
                end
                #sort groups
-               var sorter = new ComparableSorter[MClass]
+               var sorter = new MClassNameSorter
                var sorted = new Array[MClass]
                sorted.add_all(cats.keys)
                sorter.sort(sorted)
@@ -261,7 +261,7 @@ class NitIndex
                for mclass in sorted do
                        var mprops = cats[mclass]
                        pager.add("# {mclass.namespace}".bold)
-                       var sorterp = new ComparableSorter[MProperty]
+                       var sorterp = new MPropertyNameSorter
                        sorterp.sort(mprops)
                        for mprop in mprops do
                                if mprop isa MMethod and mbuilder.mpropdef2npropdef.has_key(mprop.intro) then
@@ -343,20 +343,12 @@ end
 # Printing facilities
 
 redef class MModule
-       super Comparable
-       redef type OTHER: MModule
-       redef fun <(other: OTHER): Bool do return self.name < other.name
-
        private fun namespace: String do
                return full_name
        end
 end
 
 redef class MClass
-       super Comparable
-       redef type OTHER: MClass
-       redef fun <(other: OTHER): Bool do return self.name < other.name
-
        redef fun to_s: String do
                if arity > 0 then
                        return "{name}[{intro.parameter_names.join(", ")}]"
@@ -395,12 +387,6 @@ redef class MClassDef
        end
 end
 
-redef class MProperty
-       super Comparable
-       redef type OTHER: MProperty
-       redef fun <(other: OTHER): Bool do return self.name < other.name
-end
-
 redef class MVirtualTypeProp
        private fun short_doc: String do
                var ret = ""
index 1722a9c..812267a 100644 (file)
@@ -361,7 +361,7 @@ class NitdocOverview
                        end
                end
                # sort modules
-               var sorter = new ComparableSorter[MModule]
+               var sorter = new MModuleNameSorter
                self.mmodules.add_all(mmodules)
                sorter.sort(self.mmodules)
        end
@@ -461,7 +461,7 @@ class NitdocFullindex
        # Add to content modules column
        private fun module_column do
                var sorted = ctx.mbuilder.model.mmodule_importation_hierarchy.to_a
-               var sorter = new ComparableSorter[MModule]
+               var sorter = new MModuleNameSorter
                sorter.sort(sorted)
                append("<article class='modules filterable'>")
                append("<h2>Modules</h2>")
@@ -478,7 +478,7 @@ class NitdocFullindex
        # Add to content classes modules
        private fun classes_column do
                var sorted = ctx.mbuilder.model.mclasses
-               var sorter = new ComparableSorter[MClass]
+               var sorter = new MClassNameSorter
                sorter.sort(sorted)
                append("<article class='modules filterable'>")
                append("<h2>Classes</h2>")
@@ -496,7 +496,7 @@ class NitdocFullindex
        # Insert the properties column of fullindex page
        private fun properties_column do
                var sorted = ctx.mbuilder.model.mproperties
-               var sorter = new ComparableSorter[MProperty]
+               var sorter = new MPropertyNameSorter
                sorter.sort(sorted)
                append("<article class='modules filterable'>")
                append("<h2>Properties</h2>")
@@ -633,7 +633,7 @@ class NitdocModule
 
        private fun display_module_list(list: Array[MModule]) do
                append("<ul>")
-               var sorter = new ComparableSorter[MModule]
+               var sorter = new MModuleNameSorter
                sorter.sort(list)
                for m in list do
                        append("<li>")
@@ -657,7 +657,7 @@ class NitdocModule
 
                var sorted = new Array[MClass]
                sorted.add_all(all_mclasses)
-               var sorter = new ComparableSorter[MClass]
+               var sorter = new MClassNameSorter
                sorter.sort(sorted)
                append("<div class='module'>")
                append("<article class='classes filterable'>")
@@ -689,7 +689,7 @@ class NitdocModule
                end
                for c in mmodule.mclassdefs do mpropdefs.add_all(c.mpropdefs)
                var sorted = mpropdefs.to_a
-               var sorter = new ComparableSorter[MPropDef]
+               var sorter = new MPropDefNameSorter
                sorter.sort(sorted)
                # display properties in one column
                append("<article class='properties filterable'>")
@@ -787,7 +787,7 @@ class NitdocClass
        end
 
        private fun properties_column do
-               var sorter = new ComparableSorter[MPropDef]
+               var sorter = new MPropDefNameSorter
                append("<nav class='properties filterable'>")
                append("<h3>Properties</h3>")
                # virtual types
@@ -833,7 +833,7 @@ class NitdocClass
 
        private fun inheritance_column do
                var sorted = new Array[MClass]
-               var sorterp = new ComparableSorter[MClass]
+               var sorterp = new MClassNameSorter
                append("<nav>")
                append("<h3>Inheritance</h3>")
                var greaters = mclass.in_hierarchy(ctx.mainmodule).greaters.to_a
@@ -944,9 +944,7 @@ class NitdocClass
                append("</ul>")
                append("</section>")
                # properties
-               var prop_sorter = new ComparableSorter[MPropDef]
-               var sorterprop = new ComparableSorter[MProperty]
-               var sorterc = new ComparableSorter[MClass]
+               var prop_sorter = new MPropDefNameSorter
                var lmmodule = new List[MModule]
                # virtual and formal types
                var local_vtypes = new Array[MVirtualTypeDef]
@@ -1100,10 +1098,6 @@ end
 #
 
 redef class MModule
-       super Comparable
-       redef type OTHER: MModule
-       redef fun <(other: OTHER): Bool do return self.name < other.name
-
        # URL to nitdoc page
        fun url: String do
                var res = new Buffer
@@ -1183,10 +1177,6 @@ redef class MModule
 end
 
 redef class MClass
-       super Comparable
-       redef type OTHER: MClass
-       redef fun <(other: OTHER): Bool do return self.name < other.name
-
        # Return the module signature decorated with html
        fun html_full_signature(page: NitdocPage) do
                if visibility < public_visibility then page.append("{visibility.to_s} ")
@@ -1233,10 +1223,6 @@ redef class MClass
 end
 
 redef class MProperty
-       super Comparable
-       redef type OTHER: MProperty
-       redef fun <(other: OTHER): Bool do return self.name < other.name
-
        # Return the property namespace decorated with html
        fun html_namespace(page: NitdocPage) do
                intro_mclassdef.mclass.html_namespace(page)
@@ -1297,10 +1283,6 @@ redef class MClassDef
 end
 
 redef class MPropDef
-       super Comparable
-       redef type OTHER: MPropDef
-       redef fun <(other: OTHER): Bool do return self.mproperty.name < other.mproperty.name
-
        fun url: String do return "{mclassdef.mclass.url}#{anchor}"
        fun anchor: String do return "PROP_{mclassdef.mclass.public_owner.name}_{c_name}"