1 # This file is part of NIT ( http://www.nitlanguage.org ).
3 # Licensed under the Apache License, Version 2.0 (the "License");
4 # you may not use this file except in compliance with the License.
5 # You may obtain a copy of the License at
7 # http://www.apache.org/licenses/LICENSE-2.0
9 # Unless required by applicable law or agreed to in writing, software
10 # distributed under the License is distributed on an "AS IS" BASIS,
11 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 # See the License for the specific language governing permissions and
13 # limitations under the License.
15 # Computes importation and class hierarchy lists.
16 module doc_hierarchies
21 # Insert inheritance / importation lists in the page.
22 class InheritanceListsPhase
25 # Used to sort list by name.
26 var name_sorter
= new MEntityNameSorter
29 for page
in doc
.pages
do
30 if page
isa MEntityPage then page
.build_inh_list
(self, doc
)
35 redef class MEntityPage
37 # Build importation / inheritance list for this page.
38 fun build_inh_list
(v
: InheritanceListsPhase, doc
: DocModel) do end
41 redef class MModulePage
42 redef fun build_inh_list
(v
, doc
) do
43 var section
= new ImportationListSection
44 var imports
= self.imports
.to_a
45 v
.name_sorter
.sort
(imports
)
46 section
.children
.add
new HierarchyListArticle(mentity
, "Imports", imports
)
47 var clients
= self.clients
.to_a
48 v
.name_sorter
.sort
(clients
)
49 section
.children
.add
new HierarchyListArticle(mentity
, "Clients", clients
)
50 root
.children
.insert
(section
, 1)
54 redef class MClassPage
55 redef fun build_inh_list
(v
, doc
) do
56 var section
= new InheritanceListSection
57 var parents
= self.parents
.to_a
58 v
.name_sorter
.sort
(parents
)
59 section
.children
.add
new HierarchyListArticle(mentity
, "Parents", parents
)
60 var ancestors
= self.ancestors
.to_a
61 v
.name_sorter
.sort
(ancestors
)
62 section
.children
.add
new HierarchyListArticle(mentity
, "Ancestors", ancestors
)
63 var children
= self.children
.to_a
64 v
.name_sorter
.sort
(children
)
65 section
.children
.add
new HierarchyListArticle(mentity
, "Children", children
)
66 var descendants
= self.descendants
.to_a
67 v
.name_sorter
.sort
(descendants
)
68 section
.children
.add
new HierarchyListArticle(mentity
, "Descendants", descendants
)
69 root
.children
.insert
(section
, 1)
74 class ImportationListSection
79 class InheritanceListSection
83 # Dislay a hierarchical list of mentities.
84 class HierarchyListArticle
87 # Title displayed in the top of this list.
88 var list_title
: String
90 # MEntities to display in this list.
91 var mentities
: Array[MEntity]