diff options
Diffstat (limited to 'plugins/base/src/main/kotlin')
2 files changed, 11 insertions, 33 deletions
diff --git a/plugins/base/src/main/kotlin/transformers/documentables/EmptyPackagesFilterTransformer.kt b/plugins/base/src/main/kotlin/transformers/documentables/EmptyPackagesFilterTransformer.kt index 61abfbd7..2528b5f0 100644 --- a/plugins/base/src/main/kotlin/transformers/documentables/EmptyPackagesFilterTransformer.kt +++ b/plugins/base/src/main/kotlin/transformers/documentables/EmptyPackagesFilterTransformer.kt @@ -1,28 +1,23 @@ package org.jetbrains.dokka.base.transformers.documentables -import org.jetbrains.dokka.DokkaConfiguration import org.jetbrains.dokka.model.DModule -import org.jetbrains.dokka.model.DPackage import org.jetbrains.dokka.plugability.DokkaContext import org.jetbrains.dokka.transformers.documentation.PreMergeDocumentableTransformer class EmptyPackagesFilterTransformer(val context: DokkaContext) : PreMergeDocumentableTransformer { - override fun invoke(modules: List<DModule>): List<DModule> = modules.map { original -> - original.let { - EmptyPackagesFilter(original.sourceSets.single()).processModule(it) - } + override fun invoke(modules: List<DModule>): List<DModule> { + return modules.mapNotNull { module -> filterModule(module) } } - private class EmptyPackagesFilter( - val sourceSet: DokkaConfiguration.DokkaSourceSet - ) { - fun DPackage.shouldBeSkipped() = sourceSet.skipEmptyPackages && - functions.isEmpty() && - properties.isEmpty() && - classlikes.isEmpty() + private fun filterModule(module: DModule): DModule? { + val nonEmptyPackages = module.packages.filterNot { pkg -> + pkg.sourceSet.skipEmptyPackages && pkg.children.isEmpty() + } - fun processModule(module: DModule) = module.copy( - packages = module.packages.filter { !it.shouldBeSkipped() } - ) + return when { + nonEmptyPackages == module.packages -> module + nonEmptyPackages.isEmpty() -> null + else -> module.copy(packages = nonEmptyPackages) + } } } diff --git a/plugins/base/src/main/kotlin/transformers/documentables/SuppressedDocumentableFilterTransformer.kt b/plugins/base/src/main/kotlin/transformers/documentables/SuppressedDocumentableFilterTransformer.kt index e7a2bf25..f329e9ce 100644 --- a/plugins/base/src/main/kotlin/transformers/documentables/SuppressedDocumentableFilterTransformer.kt +++ b/plugins/base/src/main/kotlin/transformers/documentables/SuppressedDocumentableFilterTransformer.kt @@ -48,21 +48,4 @@ class SuppressedDocumentableFilterTransformer(val context: DokkaContext) : PreMe } } - /** - * A [PreMergeDocumentableTransformer] can safely assume that documentables are not merged and therefore - * only belong to a single source set - */ - private val Documentable.sourceSet: DokkaSourceSet get() = sourceSets.single() - - private val Documentable.perPackageOptions: DokkaConfiguration.PackageOptions? - get() { - val packageName = dri.packageName ?: return null - return sourceSet.perPackageOptions - .sortedByDescending { packageOptions -> packageOptions.prefix.length } - .firstOrNull { packageOptions -> packageName.startsWith(packageOptions.prefix) } - } - - private val <T> T.source: DocumentableSource where T : Documentable, T : WithExpectActual - get() = checkNotNull(sources[sourceSet]) - } |