aboutsummaryrefslogtreecommitdiff
path: root/core
diff options
context:
space:
mode:
Diffstat (limited to 'core')
-rw-r--r--core/src/main/kotlin/transformers/documentation/PreMergeDocumentableTransformer.kt40
1 files changed, 23 insertions, 17 deletions
diff --git a/core/src/main/kotlin/transformers/documentation/PreMergeDocumentableTransformer.kt b/core/src/main/kotlin/transformers/documentation/PreMergeDocumentableTransformer.kt
index dfc7319f..df568c7e 100644
--- a/core/src/main/kotlin/transformers/documentation/PreMergeDocumentableTransformer.kt
+++ b/core/src/main/kotlin/transformers/documentation/PreMergeDocumentableTransformer.kt
@@ -1,30 +1,36 @@
package org.jetbrains.dokka.transformers.documentation
-import org.jetbrains.dokka.DokkaConfiguration
import org.jetbrains.dokka.DokkaConfiguration.DokkaSourceSet
+import org.jetbrains.dokka.DokkaConfiguration.PackageOptions
import org.jetbrains.dokka.model.DModule
import org.jetbrains.dokka.model.Documentable
-import org.jetbrains.dokka.model.DocumentableSource
import org.jetbrains.dokka.model.WithExpectActual
interface PreMergeDocumentableTransformer {
operator fun invoke(modules: List<DModule>): List<DModule>
+}
- /* Convenience functions */
- /**
- * A [PreMergeDocumentableTransformer] can safely assume that documentables are not merged and therefore
- * only belong to a single source set
- */
- val Documentable.sourceSet: DokkaSourceSet get() = sourceSets.single()
+/* Utils */
- 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) }
- }
+/**
+ * It is fair to assume that a given [Documentable] is not merged when seen by the [PreMergeDocumentableTransformer].
+ * Therefore, it can also be assumed, that there is just a single source set connected to the given [documentable]
+ * @return the single source set associated with this [documentable].
+ */
+@Suppress("unused") // Receiver is used for scoping this function
+fun PreMergeDocumentableTransformer.sourceSet(documentable: Documentable): DokkaSourceSet {
+ return documentable.sourceSets.single()
+}
- val <T> T.source: DocumentableSource where T : Documentable, T : WithExpectActual
- get() = checkNotNull(sources[sourceSet])
+/**
+ * @return The [PackageOptions] associated with this documentable, or null
+ */
+fun PreMergeDocumentableTransformer.perPackageOptions(documentable: Documentable): PackageOptions? {
+ val packageName = documentable.dri.packageName ?: return null
+ return sourceSet(documentable).perPackageOptions
+ .sortedByDescending { packageOptions -> packageOptions.prefix.length }
+ .firstOrNull { packageOptions -> packageName.startsWith(packageOptions.prefix) }
}
+
+fun <T> PreMergeDocumentableTransformer.source(documentable: T) where T : Documentable, T : WithExpectActual =
+ checkNotNull(documentable.sources[sourceSet(documentable)])