@@ -7,10 +7,13 @@ import java.nio.file.FileVisitOption
7
7
8
8
import org .jetbrains .dokka .base .renderers .html .{NavigationNode , NavigationPage }
9
9
import org .jetbrains .dokka .model .Documentable
10
+ import org .jetbrains .dokka .model .DPackage
11
+ import org .jetbrains .dokka .model .DModule
10
12
import org .jetbrains .dokka .pages ._
11
13
import org .jetbrains .dokka .transformers .pages .PageTransformer
12
14
13
15
import scala .collection .JavaConverters ._
16
+ import dotty .dokka .model .api ._
14
17
15
18
abstract class BaseStaticSiteProcessor (staticSiteContext : Option [StaticSiteContext ]) extends PageTransformer :
16
19
final override def invoke (input : RootPageNode ): RootPageNode = staticSiteContext.fold(input)(transform(input, _))
@@ -118,22 +121,36 @@ class RootIndexPageCreator(ctx: Option[StaticSiteContext]) extends BaseStaticSit
118
121
val (contentNodes, nonContent) = input.getChildren.asScala.partition { _.isInstanceOf [ContentNode ] }
119
122
val (navigations, rest) = nonContent.partition { _.isInstanceOf [NavigationPage ] }
120
123
val modifiedNavigation = navigations.map { it =>
121
- val root = it.asInstanceOf [NavigationPage ].getRoot
122
- val api = root.getChildren.asScala.filter(_.getDri == apiPageDRI)
124
+ val sourceSets = it.asInstanceOf [NavigationPage ].getRoot.getSourceSets
125
+ def flatMapPackages (pn : PageNode ): List [NavigationNode ] =
126
+ def processChildren = pn.getChildren.asScala.flatMap(flatMapPackages).toList
127
+ pn match
128
+ case cp : ContentPage => cp.getDocumentable match
129
+ case null =>
130
+ processChildren
131
+ case p : DPackage =>
132
+ List (new NavigationNode (p.getName, p.getDri, sourceSets, JList ())) ++ processChildren
133
+ case other =>
134
+ Nil
135
+ case _ =>
136
+ Nil
137
+
138
+ val packagesNavigation = input.getChildren.asScala.flatMap(flatMapPackages).sortBy(_.getName)
139
+ val api = new NavigationNode (" API" , apiPageDRI, sourceSets, packagesNavigation.asJava)
123
140
124
141
def toNavigationNode (page : StaticPageNode ): NavigationNode = NavigationNode (
125
142
page.title(),
126
143
page.getDri.asScala.head,
127
- root.getSourceSets ,
144
+ sourceSets ,
128
145
page.getChildren.asScala.collect { case p : StaticPageNode => toNavigationNode(p)}.asJava
129
146
)
130
147
131
148
new NavigationPage (
132
149
new NavigationNode (
133
150
input.getName,
134
151
docsRootDRI,
135
- root.getSourceSets ,
136
- (ctx.mainPages.map(toNavigationNode) ++ api).asJava
152
+ sourceSets ,
153
+ (ctx.mainPages.map(toNavigationNode) ++ Seq ( api) ).asJava
137
154
)
138
155
)
139
156
}
0 commit comments