diff options
| author | Andrzej Ratajczak <andrzej.ratajczak98@gmail.com> | 2020-04-10 16:59:25 +0200 |
|---|---|---|
| committer | Paweł Marks <Kordyjan@users.noreply.github.com> | 2020-05-13 10:03:48 +0200 |
| commit | 6166ddfeb6ee977a302d4cacc80dac23cc7e2baf (patch) | |
| tree | 1fb93e53c8fbd5f76cf2f1438fa0ff4cdfe3494e /plugins/base/src/main/kotlin/transformers/documentables | |
| parent | 79d1827b5d249c0a597c6c2f9cb91ff8f5689d94 (diff) | |
| download | dokka-6166ddfeb6ee977a302d4cacc80dac23cc7e2baf.tar.gz dokka-6166ddfeb6ee977a302d4cacc80dac23cc7e2baf.tar.bz2 dokka-6166ddfeb6ee977a302d4cacc80dac23cc7e2baf.zip | |
Working tests for includes, sources and samples. Minor bugfixes
Diffstat (limited to 'plugins/base/src/main/kotlin/transformers/documentables')
| -rw-r--r-- | plugins/base/src/main/kotlin/transformers/documentables/ModuleAndPackageDocumentationTransformer.kt | 34 |
1 files changed, 22 insertions, 12 deletions
diff --git a/plugins/base/src/main/kotlin/transformers/documentables/ModuleAndPackageDocumentationTransformer.kt b/plugins/base/src/main/kotlin/transformers/documentables/ModuleAndPackageDocumentationTransformer.kt index a5d6540e..b69c43d3 100644 --- a/plugins/base/src/main/kotlin/transformers/documentables/ModuleAndPackageDocumentationTransformer.kt +++ b/plugins/base/src/main/kotlin/transformers/documentables/ModuleAndPackageDocumentationTransformer.kt @@ -2,6 +2,8 @@ package org.jetbrains.dokka.base.transformers.documentables import org.jetbrains.dokka.model.DModule import org.jetbrains.dokka.model.PlatformDependent +import org.jetbrains.dokka.model.doc.DocumentationNode +import org.jetbrains.dokka.pages.PlatformData import org.jetbrains.dokka.parsers.MarkdownParser import org.jetbrains.dokka.plugability.DokkaContext import org.jetbrains.dokka.transformers.documentation.PreMergeDocumentableTransformer @@ -66,15 +68,15 @@ internal object ModuleAndPackageDocumentationTransformer : PreMergeDocumentableT } }.toMap() - val packagesDocumentation = module.packages.map { - it.name to it.platformData.mapNotNull { pd -> - val doc = modulesAndPackagesDocumentation[Pair(module.name, pd)] - val facade = context.platforms[pd]?.facade - ?: return@mapNotNull null.also { context.logger.warn("Could not find platform data for ${pd.name}") } - val descriptor = facade.resolveSession.getPackageFragment(FqName(it.name)) - ?: return@mapNotNull null.also { context.logger.warn("Could not find descriptor for $") } - doc?.get("Package")?.get(it.name)?.run { - pd to MarkdownParser( + val packagesDocumentation = module.packages.map { dPackage -> + dPackage.name to dPackage.platformData.mapNotNull { platformData -> + val doc = modulesAndPackagesDocumentation[Pair(module.name, platformData)] + val facade = context.platforms[platformData]?.facade + ?: return@mapNotNull null.also { context.logger.warn("Could not find platform data for ${platformData.name}") } + val descriptor = facade.resolveSession.getPackageFragment(FqName(dPackage.name)) + ?: return@mapNotNull null.also { context.logger.warn("Could not find descriptor for ${dPackage.name}") } + doc?.get("Package")?.get(dPackage.name)?.run { + platformData to MarkdownParser( facade, descriptor, context.logger @@ -84,11 +86,12 @@ internal object ModuleAndPackageDocumentationTransformer : PreMergeDocumentableT }.toMap() module.copy( - documentation = module.documentation.let { PlatformDependent(it.map + moduleDocumentation) }, + documentation = module.documentation.let { mergeDocumentation(it.map, moduleDocumentation) }, packages = module.packages.map { - if (packagesDocumentation[it.name] != null) + val packageDocumentation = packagesDocumentation[it.name] + if (packageDocumentation != null && packageDocumentation.isNotEmpty()) it.copy(documentation = it.documentation.let { value -> - PlatformDependent(value.map + packagesDocumentation[it.name]!!) + mergeDocumentation(value.map, packageDocumentation) }) else it @@ -96,4 +99,11 @@ internal object ModuleAndPackageDocumentationTransformer : PreMergeDocumentableT ) } } + + private fun mergeDocumentation(origin: Map<PlatformData, DocumentationNode>, new: Map<PlatformData, DocumentationNode>) = PlatformDependent( + (origin.asSequence() + new.asSequence()) + .distinct() + .groupBy({ it.key }, { it.value }) + .mapValues { (_, values) -> DocumentationNode(values.flatMap { it.children }) } + ) } |
