Oliver.O
10/24/2025, 6:35 PMOliver.O
10/24/2025, 6:38 PMpackage de.infix.testBalloon.dokka
import org.jetbrains.dokka.base.DokkaBase
import org.jetbrains.dokka.base.renderers.html.NavigationNode
import org.jetbrains.dokka.base.renderers.html.NavigationPageInstaller
import org.jetbrains.dokka.pages.RootPageNode
import org.jetbrains.dokka.plugability.DokkaContext
import org.jetbrains.dokka.plugability.DokkaPlugin
import org.jetbrains.dokka.plugability.DokkaPluginApiPreview
import org.jetbrains.dokka.plugability.PluginApiPreviewAcknowledgement
@Suppress("unused")
class DokkaHideExtensionsOnTopLevel : DokkaPlugin() {
val myFilterExtension by extending {
plugin<DokkaBase>().navigationPageInstaller providing ::DokkaHideExtensionsOnTopLevelTransformer
}
@DokkaPluginApiPreview
override fun pluginApiPreviewAcknowledgement() = PluginApiPreviewAcknowledgement
}
private class DokkaHideExtensionsOnTopLevelTransformer(context: DokkaContext) : NavigationPageInstaller(context) {
override fun navigableChildren(input: RootPageNode): NavigationNode = super.navigableChildren(input)
}Oliver.O
10/24/2025, 6:43 PMOleg Yukhnevich
10/27/2025, 8:52 AMThe entire extension mechanism is still a mystery to metrue 😞 In your case, you need to extend not
navigationPageInstaller but htmlPreprocessors, as navigationPageInstaller is just one of many. So it will look like this:
class DokkaHideExtensionsOnTopLevel : DokkaPlugin() {
val dokkaBase = plugin<DokkaBase>()
val myFilterExtension: Extension<PageTransformer, *, *> by extending {
dokkaBase.htmlPreprocessors providing ::DokkaHideExtensionsOnTopLevelTransformer override dokkaBase.navigationPageInstaller
}
@DokkaPluginApiPreview
override fun pluginApiPreviewAcknowledgement() = PluginApiPreviewAcknowledgement
}
Here, you extend dokkaBase.htmlPreprocessors by providing a new processor DokkaHideExtensionsOnTopLevelTransformer, which overrides dokkaBase.navigationPageInstallerOleg Yukhnevich
10/27/2025, 9:01 AMOliver.O
10/27/2025, 10:19 AMtestSuite and test. And it has a TestConfig builder with a number of extension functions to customize its behavior. The idea is to hide the TestConfig extensions from the navigation, then let them explore them under the TestConfig class. I'm not sure whether that's the best solution, but it's one I would like to explore.Oliver.O
10/27/2025, 10:22 AMOleg Yukhnevich
10/27/2025, 10:27 AMOliver.O
10/27/2025, 10:34 AM