model_utils: replace many sorters by MEntityNameSorter
authorAlexandre Terrasa <alexandre@moz-code.org>
Thu, 19 Jun 2014 20:03:34 +0000 (16:03 -0400)
committerAlexandre Terrasa <alexandre@moz-code.org>
Thu, 26 Jun 2014 16:02:02 +0000 (12:02 -0400)
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>

src/doc/doc_pages.nit
src/model_utils.nit
src/nitx.nit

index e41cae2..bb379e5 100644 (file)
@@ -230,6 +230,7 @@ abstract class NitdocPage
 
        private var ctx: NitdocContext
        private var model: Model
+       private var name_sorter = new MEntityNameSorter
 
        init(ctx: NitdocContext) do
                self.ctx = ctx
@@ -533,8 +534,7 @@ class NitdocSearch
                        if mmodule.name == "<main>" then continue
                        sorted.add mmodule
                end
-               var sorter = new MModuleNameSorter
-               sorter.sort(sorted)
+               name_sorter.sort(sorted)
                return sorted
        end
 
@@ -545,8 +545,7 @@ class NitdocSearch
                        if mclass.visibility < ctx.min_visibility then continue
                        sorted.add mclass
                end
-               var sorter = new MClassNameSorter
-               sorter.sort(sorted)
+               name_sorter.sort(sorted)
                return sorted
        end
 
@@ -558,8 +557,7 @@ class NitdocSearch
                        if mproperty isa MAttribute then continue
                        sorted.add mproperty
                end
-               var sorter = new MPropertyNameSorter
-               sorter.sort(sorted)
+               name_sorter.sort(sorted)
                return sorted
        end
 end
@@ -616,7 +614,6 @@ class NitdocModule
                if clients.length > 10 then clients = mmodule.in_importation.direct_smallers
 
                # Display lists
-               var sorter = new MModuleNameSorter
                var section = new TplSection.with_title("inheritance", "Inheritance")
 
                # Graph
@@ -631,7 +628,7 @@ class NitdocModule
                # nested modules
                if not nested.is_empty then
                        var lst = nested.to_a
-                       sorter.sort lst
+                       name_sorter.sort lst
                        section.add_child tpl_list("nesting", "Nested modules", lst)
                end
 
@@ -643,7 +640,7 @@ class NitdocModule
                        lst.add(dep)
                end
                if not lst.is_empty then
-                       sorter.sort lst
+                       name_sorter.sort lst
                        section.add_child tpl_list("imports", "Imports", lst)
                end
 
@@ -655,7 +652,7 @@ class NitdocModule
                        lst.add(dep)
                end
                if not lst.is_empty then
-                       sorter.sort lst
+                       name_sorter.sort lst
                        section.add_child tpl_list("clients", "Clients", lst)
                end
 
@@ -671,19 +668,18 @@ class NitdocModule
        end
 
        private fun tpl_mclasses(parent: TplSection) do
-               var sorter = new MClassNameSorter
                var mclassdefs = new HashSet[MClassDef]
                mclassdefs.add_all mmodule.in_nesting_intro_mclassdefs(ctx.min_visibility)
                mclassdefs.add_all mmodule.in_nesting_redef_mclassdefs(ctx.min_visibility)
                var mclasses2mdefs = sort_by_mclass(mclassdefs)
                var sorted_mclasses = mclasses2mdefs.keys.to_a
-               sorter.sort sorted_mclasses
+               name_sorter.sort sorted_mclasses
 
                # intros
                var section = new TplSection.with_title("intros", "Introductions")
                var intros = mmodule.in_nesting_intro_mclasses(ctx.min_visibility)
                var sorted_intros = intros.to_a
-               sorter.sort(sorted_intros)
+               name_sorter.sort(sorted_intros)
                for mclass in sorted_intros do
                        if not mclasses2mdefs.has_key(mclass) then continue
                        section.add_child tpl_mclass_article(mclass, mclasses2mdefs[mclass].to_a)
@@ -693,7 +689,7 @@ class NitdocModule
                # redefs
                section = new TplSection.with_title("redefs", "Refinements")
                var redefs = mmodule.in_nesting_redef_mclasses(ctx.min_visibility).to_a
-               sorter.sort(redefs)
+               name_sorter.sort(redefs)
                for mclass in redefs do
                        if intros.has(mclass) then continue
                        if not mclasses2mdefs.has_key(mclass) then continue
@@ -803,11 +799,9 @@ class NitdocClass
                tpl_sidebar.boxes.add new TplSideBox.with_content("All properties", summary)
        end
 
-       var mprop_sorter = new MPropertyNameSorter
-
        private fun tpl_sidebar_list(name: String, mprops: Array[MProperty], summary: TplList) do
                if mprops.is_empty then return
-               mprop_sorter.sort(mprops)
+               name_sorter.sort(mprops)
                var entry = new TplListItem.with_content(name)
                var list = new TplList.with_classes(["list-unstyled", "list-labeled"])
                for mprop in mprops do
@@ -858,8 +852,7 @@ class NitdocClass
 
                if not owners.is_empty then
                        var article = new TplArticle.with_title("concerns", "Concerns")
-                       var module_sorter = new MModuleNameSorter
-                       module_sorter.sort owners
+                       name_sorter.sort owners
                        var list = new TplList.with_classes(["list-unstyled", "list-definition"])
                        for owner in owners do
                                var li = new Template
@@ -871,7 +864,7 @@ class NitdocClass
                                var smmodules = owner_map[owner].to_a
                                #if not smmodules.length >= 1 then
                                        var slist = new TplList.with_classes(["list-unstyled", "list-definition"])
-                                       module_sorter.sort smmodules
+                                       name_sorter.sort smmodules
                                        for mmodule in smmodules do
                                                if mmodule == owner then continue
                                                var sli = new Template
@@ -925,7 +918,6 @@ class NitdocClass
                end
 
                # Display lists
-               var sorter = new MClassNameSorter
                var section = new TplSection.with_title("inheritance", "Inheritance")
 
                # Graph
@@ -941,28 +933,28 @@ class NitdocClass
                # parents
                if not hparents.is_empty then
                        var lst = hparents.to_a
-                       sorter.sort lst
+                       name_sorter.sort lst
                        section.add_child tpl_list("parents", "Parents", lst)
                end
 
                # ancestors
                if not hancestors.is_empty then
                        var lst = hancestors.to_a
-                       sorter.sort lst
+                       name_sorter.sort lst
                        section.add_child tpl_list("ancestors", "Ancestors", lst)
                end
 
                # children
                if not hchildren.is_empty and hchildren.length < 15 then
                        var lst = hchildren.to_a
-                       sorter.sort lst
+                       name_sorter.sort lst
                        section.add_child tpl_list("children", "Children", lst)
                end
 
                # descendants
                if not hdescendants.is_empty and hchildren.length < 15 then
                        var lst = hdescendants.to_a
-                       sorter.sort lst
+                       name_sorter.sort lst
                        section.add_child tpl_list("descendants", "Descendants", lst)
                end
 
@@ -992,12 +984,11 @@ class NitdocClass
                        for mmodule in owner_map[owner] do
                                # properties
                                var mprops = mod_map[mmodule]
-                               var sorter = new MPropertyNameSorter
                                var kind_map = sort_by_kind(mprops)
 
                                # virtual types
                                var elts = kind_map["type"].to_a
-                               sorter.sort(elts)
+                               name_sorter.sort(elts)
                                for elt in elts do
                                        var defs = mprops2mdefs[elt].to_a
                                        section.add_child tpl_mprop_article(elt, defs)
@@ -1005,7 +996,7 @@ class NitdocClass
 
                                # constructors
                                elts = kind_map["init"].to_a
-                               sorter.sort(elts)
+                               name_sorter.sort(elts)
                                for elt in elts do
                                        var defs = mprops2mdefs[elt].to_a
                                        section.add_child tpl_mprop_article(elt, defs)
@@ -1013,7 +1004,7 @@ class NitdocClass
 
                                # methods
                                elts = kind_map["fun"].to_a
-                               sorter.sort(elts)
+                               name_sorter.sort(elts)
                                for elt in elts do
                                        var defs = mprops2mdefs[elt].to_a
                                        section.add_child tpl_mprop_article(elt, defs)
index f98e90e..6decb0f 100644 (file)
@@ -469,37 +469,3 @@ class MEntityNameSorter
        init do end
 end
 
-# 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 mclassdefs by their name
-class MClassDefNameSorter
-       super AbstractSorter[MClassDef]
-       redef fun compare(a, b) do return a.mclass.name <=> b.mclass.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 0e0d345..29be82b 100644 (file)
@@ -79,7 +79,7 @@ class NitIndex
                print "Loaded modules:"
                var mmodules = new Array[MModule]
                mmodules.add_all(model.mmodules)
-               var sorter = new MModuleNameSorter
+               var sorter = new MEntityNameSorter
                sorter.sort(mmodules)
                for m in mmodules do
                        print "\t{m.name}"
@@ -330,7 +330,7 @@ private class PagerMatchesRenderer
                        cats[key].add(mprop)
                end
                #sort groups
-               var sorter = new MModuleNameSorter
+               var sorter = new MEntityNameSorter
                var sorted = new Array[MModule]
                sorted.add_all(cats.keys)
                sorter.sort(sorted)
@@ -338,8 +338,7 @@ private class PagerMatchesRenderer
                for mmodule in sorted do
                        var mprops = cats[mmodule]
                        pager.add("# matches in module {mmodule.namespace.bold}")
-                       var sorterp = new MPropertyNameSorter
-                       sorterp.sort(mprops)
+                       sorter.sort(mprops)
                        for mprop in mprops do
 
                        end
@@ -394,7 +393,7 @@ redef class MModule
                pager.add(prototype)
                pager.add("{namespace}".bold.gray + " (lines {location.lines})".gray)
                pager.indent = pager.indent + 1
-               var sorter = new MModuleNameSorter
+               var sorter = new MEntityNameSorter
                # imported modules
                var imports = new Array[MModule]
                for mmodule in in_importation.direct_greaters.to_a do
@@ -412,7 +411,6 @@ redef class MModule
                        pager.indent = pager.indent - 1
                end
                # mclassdefs
-               var csorter = new MClassDefNameSorter
                var intros = new Array[MClassDef]
                var redefs = new Array[MClassDef]
                for mclassdef in mclassdefs do
@@ -424,7 +422,7 @@ redef class MModule
                end
                # introductions
                if not intros.is_empty then
-                       csorter.sort(intros)
+                       sorter.sort(intros)
                        pager.add("")
                        pager.add("== introduced classes".bold)
                        pager.indent = pager.indent + 1
@@ -436,7 +434,7 @@ redef class MModule
                end
                # refinements
                if not redefs.is_empty then
-                       csorter.sort(redefs)
+                       sorter.sort(redefs)
                        pager.add("")
                        pager.add("== refined classes".bold)
                        pager.indent = pager.indent + 1
@@ -489,6 +487,7 @@ redef class MClass
 
        redef fun content(index, pager) do
                # intro comment
+               var sorter = new MEntityNameSorter
                var mdoc = intro.mdoc
                if mdoc != null then
                        for comment in mdoc.content do pager.add(comment.green)
@@ -499,8 +498,7 @@ redef class MClass
                # parents
                var supers = self.in_hierarchy(index.mainmodule).direct_greaters.to_a
                if not supers.is_empty then
-                       var csorter = new MClassNameSorter
-                       csorter.sort(supers)
+                       sorter.sort(supers)
                        pager.add("")
                        pager.add("== supers".bold)
                        pager.indent = pager.indent + 1
@@ -522,13 +520,12 @@ redef class MClass
                        pager.indent = pager.indent - 1
                end
                # intro mproperties
-               var psorter = new MPropDefNameSorter
                var mpropdefs = intro.mpropdefs
                index.mainmodule.linearize_mpropdefs(mpropdefs)
                for cat in intro.cats2mpropdefs.keys do
                        var defs = intro.cats2mpropdefs[cat].to_a
                        if defs.is_empty then continue
-                       psorter.sort(defs)
+                       sorter.sort(defs)
                        pager.add("")
                        pager.add("== {cat}".bold)
                        pager.indent = pager.indent + 1
@@ -589,11 +586,11 @@ redef class MClassDef
                pager.add("{namespace}".bold.gray + " (lines {location.lines})".gray)
                pager.indent = pager.indent + 1
                var mpropdefs = self.mpropdefs
-               var psorter = new MPropDefNameSorter
+               var sorter = new MEntityNameSorter
                index.mainmodule.linearize_mpropdefs(mpropdefs)
                for cat in cats2mpropdefs.keys do
                        var defs = cats2mpropdefs[cat].to_a
-                       psorter.sort(defs)
+                       sorter.sort(defs)
                        if defs.is_empty then continue
                        pager.add("")
                        pager.add("== {cat}".bold)