end
redef fun init_sidebar(v, doc) do end
-
- # TODO this should be done in StructurePhase.
- redef fun init_content(v, doc) do
- var tpl = new TplSearchPage("search_all")
- var section = new TplSection("search")
- # title
- tpl.title = "Index"
- # modules list
- for mmodule in modules_list(v, doc) do
- tpl.modules.add mmodule.html_link
- end
- # classes list
- for mclass in classes_list(v, doc) do
- tpl.classes.add mclass.html_link
- end
- # properties list
- for mproperty in mprops_list(v, doc) do
- var m = new Template
- m.add mproperty.intro.html_link
- m.add " ("
- m.add mproperty.intro.mclassdef.mclass.html_link
- m.add ")"
- tpl.props.add m
- end
- section.add_child tpl
- end
-
- # Extract mmodule list to display (sorted by name)
- private fun modules_list(v: RenderHTMLPhase, doc: DocModel): Array[MModule] do
- var sorted = new Array[MModule]
- for mmodule in doc.model.mmodule_importation_hierarchy do
- if mmodule.is_fictive or mmodule.is_test_suite then continue
- sorted.add mmodule
- end
- v.name_sorter.sort(sorted)
- return sorted
- end
-
- # Extract mclass list to display (sorted by name)
- private fun classes_list(v: RenderHTMLPhase, doc: DocModel): Array[MClass] do
- var sorted = doc.mclasses.to_a
- v.name_sorter.sort(sorted)
- return sorted
- end
-
- # Extract mproperty list to display (sorted by name)
- private fun mprops_list(v: RenderHTMLPhase, doc: DocModel): Array[MProperty] do
- var sorted = doc.mproperties.to_a
- v.name_sorter.sort(sorted)
- return sorted
- end
end
redef class MEntityPage
redef fun apply do
for page in doc.pages do page.apply_structure(self, doc)
end
-
- # TODO index and search page should also be structured here
end
redef class DocPage
end
end
+redef class SearchPage
+ redef fun apply_structure(v, doc) do
+ var mmodules = doc.mmodules.to_a
+ v.name_sorter.sort(mmodules)
+ var mclasses = doc.mclasses.to_a
+ v.name_sorter.sort(mclasses)
+ var mprops = doc.mproperties.to_a
+ v.name_sorter.sort(mprops)
+ root.add_child new IndexArticle(mmodules, mclasses, mprops)
+ end
+end
+
redef class MGroupPage
redef fun apply_structure(v, doc) do
var section = new MEntitySection(mentity)
class ProjectsSection
super DocArticle
end
+
+# An article that display an index of mmodules, mclasses and mproperties.
+class IndexArticle
+ super DocArticle
+
+ # List of mmodules to display.
+ var mmodules: Array[MModule]
+
+ # List of mclasses to display.
+ var mclasses: Array[MClass]
+
+ # List of mproperties to display.
+ var mprops: Array[MProperty]
+end
end
end
+redef class IndexArticle
+ redef var html_id = "index"
+ redef var html_title = "Index"
+ redef fun is_empty do
+ return mmodules.is_empty and mclasses.is_empty and mprops.is_empty
+ end
+
+ redef fun render_body do
+ addn "<div class='container-fluid'>"
+ addn " <div class='row'>"
+ render_list("Modules", mmodules)
+ render_list("Classes", mclasses)
+ render_list("Properties", mprops)
+ addn "</div>"
+ addn "</div>"
+ end
+
+ # Displays a list from the content of `mentities`.
+ private fun render_list(title: String, mentities: Array[MEntity]) do
+ if mentities.is_empty then return
+ addn "<div class='col-xs-4'>"
+ addn new Header(3, title)
+ var lst = new UnorderedList
+ for mentity in mentities do
+ if mentity isa MProperty then
+ var tpl = new Template
+ tpl.add mentity.intro.html_link
+ tpl.add " ("
+ tpl.add mentity.intro.mclassdef.mclass.html_link
+ tpl.add ")"
+ lst.add_li new ListItem(tpl)
+ else
+ lst.add_li new ListItem(mentity.html_link)
+ end
+ end
+ addn lst
+ addn "</div>"
+ end
+end
+
redef class ProjectsSection
redef var html_id = "projects"
redef var html_title = "Projects"