From 6dc9498ca849645ecb4ec923bb7116b245dca706 Mon Sep 17 00:00:00 2001 From: Błażej Kardyś Date: Wed, 27 May 2020 01:16:48 +0200 Subject: All modules page generation --- .../resolvers/local/MultimoduleLocationProvider.kt | 32 ++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 plugins/base/src/main/kotlin/resolvers/local/MultimoduleLocationProvider.kt (limited to 'plugins/base/src/main/kotlin/resolvers/local/MultimoduleLocationProvider.kt') diff --git a/plugins/base/src/main/kotlin/resolvers/local/MultimoduleLocationProvider.kt b/plugins/base/src/main/kotlin/resolvers/local/MultimoduleLocationProvider.kt new file mode 100644 index 00000000..21692bf9 --- /dev/null +++ b/plugins/base/src/main/kotlin/resolvers/local/MultimoduleLocationProvider.kt @@ -0,0 +1,32 @@ +package org.jetbrains.dokka.base.resolvers.local + +import org.jetbrains.dokka.links.DRI +import org.jetbrains.dokka.model.SourceSetData +import org.jetbrains.dokka.pages.PageNode +import org.jetbrains.dokka.pages.RootPageNode +import org.jetbrains.dokka.plugability.DokkaContext + +class MultimoduleLocationProvider(private val root: RootPageNode, context: DokkaContext) : LocationProvider { + + val defaultLocationProvider = DefaultLocationProvider(root, context) + + val paths = context.configuration.modules.map { + it.name to it.path + }.toMap() + + override fun resolve(dri: DRI, platforms: List, context: PageNode?): String = + dri.takeIf { it.packageName == MULTIMODULE_PACKAGE_PLACEHOLDER }?.classNames?.let { paths[it] }?.let { + "$it/${dri.classNames}/index.html" + } ?: defaultLocationProvider.resolve(dri, platforms, context) + + override fun resolve(node: PageNode, context: PageNode?, skipExtension: Boolean): String = + defaultLocationProvider.resolve(node, context, skipExtension) + + override fun resolveRoot(node: PageNode): String = defaultLocationProvider.resolveRoot(node) + + override fun ancestors(node: PageNode): List = listOf(root) + + companion object { + const val MULTIMODULE_PACKAGE_PLACEHOLDER = ".ext" + } +} \ No newline at end of file -- cgit