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
#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)
#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
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)
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
# 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(", ")}]"
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 = ""
end
end
# sort modules
- var sorter = new ComparableSorter[MModule]
+ var sorter = new MModuleNameSorter
self.mmodules.add_all(mmodules)
sorter.sort(self.mmodules)
end
# 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>")
# 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>")
# 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>")
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>")
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'>")
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'>")
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
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
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]
#
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
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} ")
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)
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}"