aboutsummaryrefslogtreecommitdiff
path: root/plugins/javadoc/src/main/kotlin
diff options
context:
space:
mode:
authorBłażej Kardyś <bkardys@virtuslab.com>2020-09-10 16:54:16 +0200
committerPaweł Marks <Kordyjan@users.noreply.github.com>2020-09-14 11:56:05 +0200
commit30d6e6c3d82993e76c3942fc9faf102f36736673 (patch)
treee3d62f9f9a1aa731f9b35ae5bd384f4dfa9e875a /plugins/javadoc/src/main/kotlin
parent066e810bd5fc6fc5bab8e897fd3ec9032b76ec3d (diff)
downloaddokka-30d6e6c3d82993e76c3942fc9faf102f36736673.tar.gz
dokka-30d6e6c3d82993e76c3942fc9faf102f36736673.tar.bz2
dokka-30d6e6c3d82993e76c3942fc9faf102f36736673.zip
Adding javadoc source set based filtering
Diffstat (limited to 'plugins/javadoc/src/main/kotlin')
-rw-r--r--plugins/javadoc/src/main/kotlin/org/jetbrains/dokka/javadoc/JavadocPageCreator.kt15
-rw-r--r--plugins/javadoc/src/main/kotlin/org/jetbrains/dokka/javadoc/JavadocPlugin.kt5
-rw-r--r--plugins/javadoc/src/main/kotlin/org/jetbrains/dokka/javadoc/transformers/documentables/JavadocDocumentableJVMSourceSetFilter.kt21
3 files changed, 31 insertions, 10 deletions
diff --git a/plugins/javadoc/src/main/kotlin/org/jetbrains/dokka/javadoc/JavadocPageCreator.kt b/plugins/javadoc/src/main/kotlin/org/jetbrains/dokka/javadoc/JavadocPageCreator.kt
index 4e5f2689..f104beb7 100644
--- a/plugins/javadoc/src/main/kotlin/org/jetbrains/dokka/javadoc/JavadocPageCreator.kt
+++ b/plugins/javadoc/src/main/kotlin/org/jetbrains/dokka/javadoc/JavadocPageCreator.kt
@@ -1,12 +1,10 @@
package org.jetbrains.dokka.javadoc
-import org.jetbrains.dokka.javadoc.pages.*
import org.jetbrains.dokka.DokkaConfiguration.DokkaSourceSet
-import org.jetbrains.dokka.Platform
import org.jetbrains.dokka.base.signatures.SignatureProvider
-import org.jetbrains.dokka.base.transformers.pages.comments.CommentsToContentConverter
import org.jetbrains.dokka.base.transformers.pages.comments.DocTagToContentConverter
import org.jetbrains.dokka.base.translators.documentables.briefFromContentNodes
+import org.jetbrains.dokka.javadoc.pages.*
import org.jetbrains.dokka.model.*
import org.jetbrains.dokka.model.doc.Description
import org.jetbrains.dokka.model.doc.Index
@@ -82,7 +80,7 @@ open class JavadocPageCreator(
JavadocContentGroup(
setOf(m.dri),
JavadocContentKind.OverviewSummary,
- m.jvmSourceSets.toDisplaySourceSets()
+ m.sourceSets.toDisplaySourceSets()
) {
title(m.name, m.brief(), documentationVersion, dri = setOf(m.dri), kind = ContentKind.Main)
leafList(setOf(m.dri),
@@ -101,7 +99,7 @@ open class JavadocPageCreator(
JavadocContentGroup(
setOf(p.dri),
JavadocContentKind.PackageSummary,
- p.jvmSourceSets.toDisplaySourceSets()
+ p.sourceSets.toDisplaySourceSets()
) {
title("Package ${p.name}", p.brief(), dri = setOf(p.dri), kind = ContentKind.Packages)
fun allClasslikes(c: DClasslike): List<DClasslike> = c.classlikes.flatMap { allClasslikes(it) } + c
@@ -133,7 +131,7 @@ open class JavadocPageCreator(
JavadocContentGroup(
setOf(c.dri),
JavadocContentKind.Class,
- c.jvmSourceSets.toDisplaySourceSets()
+ c.sourceSets.toDisplaySourceSets()
) {
title(
c.name.orEmpty(),
@@ -169,11 +167,8 @@ open class JavadocPageCreator(
)
}
- private val Documentable.jvmSourceSets
- get() = sourceSets.filter { it.analysisPlatform == Platform.jvm }
-
private val Documentable.highestJvmSourceSet
- get() = jvmSourceSets.let { sources ->
+ get() = sourceSets.let { sources ->
sources.firstOrNull { it != expectPresentInSet } ?: sources.firstOrNull()
}
diff --git a/plugins/javadoc/src/main/kotlin/org/jetbrains/dokka/javadoc/JavadocPlugin.kt b/plugins/javadoc/src/main/kotlin/org/jetbrains/dokka/javadoc/JavadocPlugin.kt
index 50eb319d..031d8695 100644
--- a/plugins/javadoc/src/main/kotlin/org/jetbrains/dokka/javadoc/JavadocPlugin.kt
+++ b/plugins/javadoc/src/main/kotlin/org/jetbrains/dokka/javadoc/JavadocPlugin.kt
@@ -9,6 +9,7 @@ import org.jetbrains.dokka.base.renderers.PackageListCreator
import org.jetbrains.dokka.base.renderers.RootCreator
import org.jetbrains.dokka.base.resolvers.shared.RecognizedLinkFormat
import org.jetbrains.dokka.javadoc.pages.*
+import org.jetbrains.dokka.javadoc.transformers.documentables.JavadocDocumentableJVMSourceSetFilter
import org.jetbrains.dokka.kotlinAsJava.KotlinAsJavaPlugin
import org.jetbrains.dokka.plugability.DokkaPlugin
import org.jetbrains.dokka.plugability.querySingle
@@ -37,6 +38,10 @@ class JavadocPlugin : DokkaPlugin() {
} override dokkaBasePlugin.documentableToPageTranslator
}
+ val documentableSourceSetFilter by extending {
+ CoreExtensions.preMergeDocumentableTransformer providing { context -> JavadocDocumentableJVMSourceSetFilter(context) }
+ }
+
val javadocLocationProviderFactory by extending {
dokkaBasePlugin.locationProviderFactory providing { context ->
JavadocLocationProviderFactory(context)
diff --git a/plugins/javadoc/src/main/kotlin/org/jetbrains/dokka/javadoc/transformers/documentables/JavadocDocumentableJVMSourceSetFilter.kt b/plugins/javadoc/src/main/kotlin/org/jetbrains/dokka/javadoc/transformers/documentables/JavadocDocumentableJVMSourceSetFilter.kt
new file mode 100644
index 00000000..dac6504e
--- /dev/null
+++ b/plugins/javadoc/src/main/kotlin/org/jetbrains/dokka/javadoc/transformers/documentables/JavadocDocumentableJVMSourceSetFilter.kt
@@ -0,0 +1,21 @@
+package org.jetbrains.dokka.javadoc.transformers.documentables
+
+import org.jetbrains.dokka.DokkaConfiguration
+import org.jetbrains.dokka.Platform
+import org.jetbrains.dokka.model.DModule
+import org.jetbrains.dokka.plugability.DokkaContext
+import org.jetbrains.dokka.transformers.documentation.PreMergeDocumentableTransformer
+
+class JavadocDocumentableJVMSourceSetFilter(val context: DokkaContext) : PreMergeDocumentableTransformer {
+
+ private val allowedSourceSets = context.configuration.sourceSets.filter { it.analysisPlatform == Platform.jvm }
+ .flatMap { it.getAllDependentSourceSets() }.distinct()
+
+ private fun DokkaConfiguration.DokkaSourceSet.getAllDependentSourceSets(): List<DokkaConfiguration.DokkaSourceSet> =
+ dependentSourceSets.flatMap { setId ->
+ context.configuration.sourceSets.find { it.sourceSetID == setId }?.getAllDependentSourceSets().orEmpty()
+ } + this
+
+ override fun invoke(modules: List<DModule>): List<DModule> =
+ modules.filter { module -> allowedSourceSets.containsAll(module.sourceSets) }
+} \ No newline at end of file