Skip to content

Commit bc2429e

Browse files
committed
Navigation displays only flatten package structure
Classes, methods etc are not longer added to navigation
1 parent 0134f2c commit bc2429e

File tree

1 file changed

+22
-5
lines changed

1 file changed

+22
-5
lines changed

scala3doc/src/dotty/dokka/site/processors.scala

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,13 @@ import java.nio.file.FileVisitOption
88
import org.jetbrains.dokka.base.renderers.html.{NavigationNode, NavigationPage}
99
import org.jetbrains.dokka.links.DRI
1010
import org.jetbrains.dokka.model.Documentable
11+
import org.jetbrains.dokka.model.DPackage
12+
import org.jetbrains.dokka.model.DModule
1113
import org.jetbrains.dokka.pages._
1214
import org.jetbrains.dokka.transformers.pages.PageTransformer
1315

1416
import scala.collection.JavaConverters._
17+
import dotty.dokka.model.api._
1518

1619
abstract class BaseStaticSiteProcessor(staticSiteContext: Option[StaticSiteContext]) extends PageTransformer:
1720
final override def invoke(input: RootPageNode): RootPageNode = staticSiteContext.fold(input)(transform(input, _))
@@ -119,22 +122,36 @@ class RootIndexPageCreator(ctx: Option[StaticSiteContext]) extends BaseStaticSit
119122
val (contentNodes, nonContent) = input.getChildren.asScala.partition { _.isInstanceOf[ContentNode] }
120123
val (navigations, rest) = nonContent.partition { _.isInstanceOf[NavigationPage] }
121124
val modifiedNavigation = navigations.map { it =>
122-
val root = it.asInstanceOf[NavigationPage].getRoot
123-
val api = root.getChildren.asScala.filter(_.getDri == apiPageDRI)
125+
val sourceSets = it.asInstanceOf[NavigationPage].getRoot.getSourceSets
126+
def flatMapPackages(pn: PageNode): List[NavigationNode] =
127+
def processChildren = pn.getChildren.asScala.flatMap(flatMapPackages).toList
128+
pn match
129+
case cp: ContentPage => cp.getDocumentable match
130+
case null =>
131+
processChildren
132+
case p: DPackage =>
133+
List(new NavigationNode(p.getName, p.getDri, sourceSets, JList())) ++ processChildren
134+
case other =>
135+
Nil
136+
case _ =>
137+
Nil
138+
139+
val packagesNavigation = input.getChildren.asScala.flatMap(flatMapPackages).sortBy(_.getName)
140+
val api = new NavigationNode("API", apiPageDRI, sourceSets, packagesNavigation.asJava)
124141

125142
def toNavigationNode(page: StaticPageNode): NavigationNode = NavigationNode(
126143
page.title(),
127144
page.getDri.asScala.head,
128-
root.getSourceSets,
145+
sourceSets,
129146
page.getChildren.asScala.collect { case p: StaticPageNode => toNavigationNode(p)}.asJava
130147
)
131148

132149
new NavigationPage(
133150
new NavigationNode(
134151
input.getName,
135152
docsRootDRI,
136-
root.getSourceSets,
137-
(ctx.mainPages.map(toNavigationNode) ++ api).asJava
153+
sourceSets,
154+
(ctx.mainPages.map(toNavigationNode) ++ Seq(api)).asJava
138155
)
139156
)
140157
}

0 commit comments

Comments
 (0)