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
.values
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 id
= mentity
.nitdoc_id
44 var section
= new TabbedGroup("{id}.importation", "Dependencies")
45 var group
= new PanelGroup("list.group", "List")
46 var imports
= self.imports
.to_a
47 v
.name_sorter
.sort
(imports
)
48 group
.add_child
new MEntitiesListArticle("{id}.imports", "Imports", imports
)
49 var clients
= self.clients
.to_a
50 v
.name_sorter
.sort
(clients
)
51 group
.add_child
new MEntitiesListArticle("{id}.clients", "Clients", clients
)
52 section
.add_child group
53 section
.parent
= root
.children
.first
54 root
.children
.first
.children
.insert
(section
, 1)
58 redef class MClassPage
59 redef fun build_inh_list
(v
, doc
) do
60 var id
= mentity
.nitdoc_id
61 var section
= new TabbedGroup("{id}.inheritance", "Inheritance")
62 var group
= new PanelGroup("list.group", "List")
63 var parents
= self.parents
.to_a
64 v
.name_sorter
.sort
(parents
)
65 group
.add_child
new MEntitiesListArticle("{id}.parents", "Parents", parents
)
66 var ancestors
= self.ancestors
.to_a
67 v
.name_sorter
.sort
(ancestors
)
68 group
.add_child
new MEntitiesListArticle("{id}.ancestors", "Ancestors", ancestors
)
69 var children
= self.children
.to_a
70 v
.name_sorter
.sort
(children
)
71 group
.add_child
new MEntitiesListArticle("{id}.children", "Children", children
)
72 var descendants
= self.descendants
.to_a
73 v
.name_sorter
.sort
(descendants
)
74 group
.add_child
new MEntitiesListArticle("{id}.descendants", "Descendants", descendants
)
75 section
.add_child group
76 section
.parent
= root
.children
.first
77 root
.children
.first
.children
.insert
(section
, 1)