aboutsummaryrefslogtreecommitdiff
path: root/dokka-subprojects/plugin-javadoc/src
diff options
context:
space:
mode:
Diffstat (limited to 'dokka-subprojects/plugin-javadoc/src')
-rw-r--r--dokka-subprojects/plugin-javadoc/src/main/kotlin/org/jetbrains/dokka/javadoc/JavadocDocumentableToPageTranslator.kt16
-rw-r--r--dokka-subprojects/plugin-javadoc/src/main/kotlin/org/jetbrains/dokka/javadoc/JavadocPageCreator.kt261
-rw-r--r--dokka-subprojects/plugin-javadoc/src/main/kotlin/org/jetbrains/dokka/javadoc/JavadocPlugin.kt113
-rw-r--r--dokka-subprojects/plugin-javadoc/src/main/kotlin/org/jetbrains/dokka/javadoc/location/JavadocLocationProvider.kt147
-rw-r--r--dokka-subprojects/plugin-javadoc/src/main/kotlin/org/jetbrains/dokka/javadoc/location/JavadocLocationProviderFactory.kt17
-rw-r--r--dokka-subprojects/plugin-javadoc/src/main/kotlin/org/jetbrains/dokka/javadoc/pages/JavadocContentNodes.kt206
-rw-r--r--dokka-subprojects/plugin-javadoc/src/main/kotlin/org/jetbrains/dokka/javadoc/pages/JavadocIndexExtra.kt14
-rw-r--r--dokka-subprojects/plugin-javadoc/src/main/kotlin/org/jetbrains/dokka/javadoc/pages/JavadocPageNodes.kt529
-rw-r--r--dokka-subprojects/plugin-javadoc/src/main/kotlin/org/jetbrains/dokka/javadoc/pages/htmlPreprocessors.kt200
-rw-r--r--dokka-subprojects/plugin-javadoc/src/main/kotlin/org/jetbrains/dokka/javadoc/pages/utils.kt42
-rw-r--r--dokka-subprojects/plugin-javadoc/src/main/kotlin/org/jetbrains/dokka/javadoc/renderer/JavadocContentToHtmlTranslator.kt90
-rw-r--r--dokka-subprojects/plugin-javadoc/src/main/kotlin/org/jetbrains/dokka/javadoc/renderer/JavadocContentToTemplateMapTranslator.kt312
-rw-r--r--dokka-subprojects/plugin-javadoc/src/main/kotlin/org/jetbrains/dokka/javadoc/renderer/KorteJavadocRenderer.kt213
-rw-r--r--dokka-subprojects/plugin-javadoc/src/main/kotlin/org/jetbrains/dokka/javadoc/renderer/SearchScriptsCreator.kt280
-rw-r--r--dokka-subprojects/plugin-javadoc/src/main/kotlin/org/jetbrains/dokka/javadoc/signatures/JavadocSignatureProvider.kt225
-rw-r--r--dokka-subprojects/plugin-javadoc/src/main/kotlin/org/jetbrains/dokka/javadoc/transformers/documentables/JavadocDocumentableJVMSourceSetFilter.kt27
-rw-r--r--dokka-subprojects/plugin-javadoc/src/main/kotlin/org/jetbrains/dokka/javadoc/translators/documentables/JavadocPageContentBuilder.kt83
-rw-r--r--dokka-subprojects/plugin-javadoc/src/main/kotlin/org/jetbrains/dokka/javadoc/utils.kt12
-rw-r--r--dokka-subprojects/plugin-javadoc/src/main/kotlin/org/jetbrains/dokka/javadoc/validity/MultiplatformConfiguredChecker.kt28
-rw-r--r--dokka-subprojects/plugin-javadoc/src/main/resources/META-INF/services/org.jetbrains.dokka.plugability.DokkaPlugin5
-rw-r--r--dokka-subprojects/plugin-javadoc/src/main/resources/static_res/dokka-javadoc-stylesheet.css10
-rw-r--r--dokka-subprojects/plugin-javadoc/src/main/resources/static_res/jquery/external/jquery/jquery.js10881
-rw-r--r--dokka-subprojects/plugin-javadoc/src/main/resources/static_res/jquery/images/ui-icons_444444_256x240.pngbin0 -> 7090 bytes
-rw-r--r--dokka-subprojects/plugin-javadoc/src/main/resources/static_res/jquery/images/ui-icons_555555_256x240.pngbin0 -> 7074 bytes
-rw-r--r--dokka-subprojects/plugin-javadoc/src/main/resources/static_res/jquery/images/ui-icons_777620_256x240.pngbin0 -> 4618 bytes
-rw-r--r--dokka-subprojects/plugin-javadoc/src/main/resources/static_res/jquery/images/ui-icons_777777_256x240.pngbin0 -> 7111 bytes
-rw-r--r--dokka-subprojects/plugin-javadoc/src/main/resources/static_res/jquery/images/ui-icons_cc0000_256x240.pngbin0 -> 4618 bytes
-rw-r--r--dokka-subprojects/plugin-javadoc/src/main/resources/static_res/jquery/images/ui-icons_ffffff_256x240.pngbin0 -> 6487 bytes
-rw-r--r--dokka-subprojects/plugin-javadoc/src/main/resources/static_res/jquery/jquery-3.6.0.min.js2
-rw-r--r--dokka-subprojects/plugin-javadoc/src/main/resources/static_res/jquery/jquery-migrate-3.4.0.min.js2
-rw-r--r--dokka-subprojects/plugin-javadoc/src/main/resources/static_res/jquery/jquery-ui.css1315
-rw-r--r--dokka-subprojects/plugin-javadoc/src/main/resources/static_res/jquery/jquery-ui.js19057
-rw-r--r--dokka-subprojects/plugin-javadoc/src/main/resources/static_res/jquery/jquery-ui.min.css7
-rw-r--r--dokka-subprojects/plugin-javadoc/src/main/resources/static_res/jquery/jquery-ui.min.js6
-rw-r--r--dokka-subprojects/plugin-javadoc/src/main/resources/static_res/jquery/jquery-ui.structure.css886
-rw-r--r--dokka-subprojects/plugin-javadoc/src/main/resources/static_res/jquery/jquery-ui.structure.min.css5
-rw-r--r--dokka-subprojects/plugin-javadoc/src/main/resources/static_res/resources/glass.pngbin0 -> 499 bytes
-rw-r--r--dokka-subprojects/plugin-javadoc/src/main/resources/static_res/resources/x.pngbin0 -> 394 bytes
-rw-r--r--dokka-subprojects/plugin-javadoc/src/main/resources/static_res/search.js212
-rw-r--r--dokka-subprojects/plugin-javadoc/src/main/resources/static_res/stylesheet.css889
-rw-r--r--dokka-subprojects/plugin-javadoc/src/main/resources/views/class.korte329
-rw-r--r--dokka-subprojects/plugin-javadoc/src/main/resources/views/components/base.korte19
-rw-r--r--dokka-subprojects/plugin-javadoc/src/main/resources/views/components/bottomNavbar.korte20
-rw-r--r--dokka-subprojects/plugin-javadoc/src/main/resources/views/components/head.korte18
-rw-r--r--dokka-subprojects/plugin-javadoc/src/main/resources/views/components/indexPage.korte30
-rw-r--r--dokka-subprojects/plugin-javadoc/src/main/resources/views/components/indexTable.korte18
-rw-r--r--dokka-subprojects/plugin-javadoc/src/main/resources/views/components/navList.korte27
-rw-r--r--dokka-subprojects/plugin-javadoc/src/main/resources/views/components/subNav.korte44
-rw-r--r--dokka-subprojects/plugin-javadoc/src/main/resources/views/components/topNavbar.korte24
-rw-r--r--dokka-subprojects/plugin-javadoc/src/main/resources/views/deprecated.korte40
-rw-r--r--dokka-subprojects/plugin-javadoc/src/main/resources/views/indexPage.korte32
-rw-r--r--dokka-subprojects/plugin-javadoc/src/main/resources/views/listPage.korte13
-rw-r--r--dokka-subprojects/plugin-javadoc/src/main/resources/views/tabPage.korte4
-rw-r--r--dokka-subprojects/plugin-javadoc/src/main/resources/views/treePage.korte48
-rw-r--r--dokka-subprojects/plugin-javadoc/src/test/kotlin/org/jetbrains/dokka/javadoc/AbstractJavadocTemplateMapTest.kt132
-rw-r--r--dokka-subprojects/plugin-javadoc/src/test/kotlin/org/jetbrains/dokka/javadoc/Asserts.kt22
-rw-r--r--dokka-subprojects/plugin-javadoc/src/test/kotlin/org/jetbrains/dokka/javadoc/JavadocAccessorNamingTest.kt93
-rw-r--r--dokka-subprojects/plugin-javadoc/src/test/kotlin/org/jetbrains/dokka/javadoc/JavadocAllClassesTemplateMapTest.kt54
-rw-r--r--dokka-subprojects/plugin-javadoc/src/test/kotlin/org/jetbrains/dokka/javadoc/JavadocClasslikeTemplateMapTest.kt461
-rw-r--r--dokka-subprojects/plugin-javadoc/src/test/kotlin/org/jetbrains/dokka/javadoc/JavadocDeprecatedTest.kt196
-rw-r--r--dokka-subprojects/plugin-javadoc/src/test/kotlin/org/jetbrains/dokka/javadoc/JavadocIndexTest.kt186
-rw-r--r--dokka-subprojects/plugin-javadoc/src/test/kotlin/org/jetbrains/dokka/javadoc/JavadocLocationTemplateMapTest.kt42
-rw-r--r--dokka-subprojects/plugin-javadoc/src/test/kotlin/org/jetbrains/dokka/javadoc/JavadocModuleTemplateMapTest.kt150
-rw-r--r--dokka-subprojects/plugin-javadoc/src/test/kotlin/org/jetbrains/dokka/javadoc/JavadocPackageTemplateMapTest.kt204
-rw-r--r--dokka-subprojects/plugin-javadoc/src/test/kotlin/org/jetbrains/dokka/javadoc/JavadocTest.kt4
-rw-r--r--dokka-subprojects/plugin-javadoc/src/test/kotlin/org/jetbrains/dokka/javadoc/location/JavadocLinkingTest.kt78
-rw-r--r--dokka-subprojects/plugin-javadoc/src/test/kotlin/org/jetbrains/dokka/javadoc/location/JavadocLocationTest.kt272
-rw-r--r--dokka-subprojects/plugin-javadoc/src/test/kotlin/org/jetbrains/dokka/javadoc/packagelist/JavadocPackageListTest.kt80
-rw-r--r--dokka-subprojects/plugin-javadoc/src/test/kotlin/org/jetbrains/dokka/javadoc/search/JavadocIndexSearchTest.kt66
-rw-r--r--dokka-subprojects/plugin-javadoc/src/test/kotlin/org/jetbrains/dokka/javadoc/transformers/documentables/JavadocDocumentableJVMSourceSetFilterTest.kt94
-rw-r--r--dokka-subprojects/plugin-javadoc/src/test/kotlin/org/jetbrains/dokka/javadoc/validity/MultiplatformConfiguredCheckerTest.kt96
71 files changed, 38988 insertions, 0 deletions
diff --git a/dokka-subprojects/plugin-javadoc/src/main/kotlin/org/jetbrains/dokka/javadoc/JavadocDocumentableToPageTranslator.kt b/dokka-subprojects/plugin-javadoc/src/main/kotlin/org/jetbrains/dokka/javadoc/JavadocDocumentableToPageTranslator.kt
new file mode 100644
index 00000000..595c307a
--- /dev/null
+++ b/dokka-subprojects/plugin-javadoc/src/main/kotlin/org/jetbrains/dokka/javadoc/JavadocDocumentableToPageTranslator.kt
@@ -0,0 +1,16 @@
+/*
+ * Copyright 2014-2023 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license.
+ */
+
+package org.jetbrains.dokka.javadoc
+
+import org.jetbrains.dokka.model.DModule
+import org.jetbrains.dokka.pages.RootPageNode
+import org.jetbrains.dokka.plugability.DokkaContext
+import org.jetbrains.dokka.transformers.documentation.DocumentableToPageTranslator
+
+public class JavadocDocumentableToPageTranslator(
+ private val context: DokkaContext
+) : DocumentableToPageTranslator {
+ override fun invoke(module: DModule): RootPageNode = JavadocPageCreator(context).pageForModule(module)
+}
diff --git a/dokka-subprojects/plugin-javadoc/src/main/kotlin/org/jetbrains/dokka/javadoc/JavadocPageCreator.kt b/dokka-subprojects/plugin-javadoc/src/main/kotlin/org/jetbrains/dokka/javadoc/JavadocPageCreator.kt
new file mode 100644
index 00000000..cfdda649
--- /dev/null
+++ b/dokka-subprojects/plugin-javadoc/src/main/kotlin/org/jetbrains/dokka/javadoc/JavadocPageCreator.kt
@@ -0,0 +1,261 @@
+/*
+ * Copyright 2014-2023 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license.
+ */
+
+package org.jetbrains.dokka.javadoc
+
+import org.jetbrains.dokka.DokkaConfiguration.DokkaSourceSet
+import org.jetbrains.dokka.base.DokkaBase
+import org.jetbrains.dokka.base.signatures.SignatureProvider
+import org.jetbrains.dokka.base.transformers.pages.comments.DocTagToContentConverter
+import org.jetbrains.dokka.base.translators.documentables.firstSentenceBriefFromContentNodes
+import org.jetbrains.dokka.javadoc.pages.*
+import org.jetbrains.dokka.model.*
+import org.jetbrains.dokka.model.doc.*
+import org.jetbrains.dokka.model.properties.PropertyContainer
+import org.jetbrains.dokka.model.properties.WithExtraProperties
+import org.jetbrains.dokka.pages.*
+import org.jetbrains.dokka.plugability.DokkaContext
+import org.jetbrains.dokka.plugability.plugin
+import org.jetbrains.dokka.plugability.querySingle
+import kotlin.reflect.KClass
+
+public open class JavadocPageCreator(context: DokkaContext) {
+ private val signatureProvider: SignatureProvider = context.plugin<DokkaBase>().querySingle { signatureProvider }
+ private val documentationVersion = context.configuration.moduleVersion
+
+ public fun pageForModule(m: DModule): JavadocModulePageNode {
+ return JavadocModulePageNode(
+ name = m.name.ifEmpty { "root" },
+ content = contentForModule(m),
+ children = m.packages.map { pageForPackage(it) },
+ dri = setOf(m.dri),
+ extra = ((m as? WithExtraProperties<DModule>)?.extra ?: PropertyContainer.empty())
+ )
+ }
+
+ public fun pageForPackage(p: DPackage): JavadocPackagePageNode {
+ return JavadocPackagePageNode(p.name, contentForPackage(p), setOf(p.dri), listOf(p),
+ p.classlikes.mapNotNull { pageForClasslike(it) }
+ )
+ }
+
+ public fun pageForClasslike(c: DClasslike): JavadocClasslikePageNode? {
+ return c.highestJvmSourceSet?.let { jvm ->
+ @Suppress("UNCHECKED_CAST")
+ val extra = ((c as? WithExtraProperties<Documentable>)?.extra ?: PropertyContainer.empty())
+ val children = c.classlikes.mapNotNull { pageForClasslike(it) }
+
+ JavadocClasslikePageNode(
+ name = c.dri.classNames.orEmpty(),
+ content = contentForClasslike(c),
+ dri = setOf(c.dri),
+ brief = c.brief(),
+ signature = signatureForNode(c, jvm),
+ description = c.descriptionToContentNodes(),
+ constructors = (c as? WithConstructors)?.constructors?.mapNotNull { it.toJavadocFunction() }.orEmpty(),
+ methods = c.functions.mapNotNull { it.toJavadocFunction() },
+ entries = (c as? DEnum)?.entries?.map {
+ JavadocEntryNode(
+ it.dri,
+ it.name,
+ signatureForNode(it, jvm),
+ it.descriptionToContentNodes(jvm),
+ PropertyContainer.withAll(it.indexesInDocumentation())
+ )
+ }.orEmpty(),
+ classlikes = children,
+ properties = c.properties.map {
+ JavadocPropertyNode(
+ it.dri,
+ it.name,
+ signatureForNode(it, jvm),
+ it.descriptionToContentNodes(jvm),
+ PropertyContainer.withAll(it.indexesInDocumentation()),
+ )
+ },
+ sinceTagContent = c.sinceToContentNodes(jvm),
+ authorTagContent = c.authorsToContentNodes(jvm),
+ documentables = listOf(c),
+ children = children,
+ extra = extra + c.indexesInDocumentation()
+ )
+ }
+ }
+
+ private fun contentForModule(m: DModule): JavadocContentNode =
+ JavadocContentGroup(
+ setOf(m.dri),
+ JavadocContentKind.OverviewSummary,
+ m.sourceSets.toDisplaySourceSets()
+ ) {
+ title(m.name, m.descriptionToContentNodes(), documentationVersion, dri = setOf(m.dri), kind = ContentKind.Main)
+ leafList(setOf(m.dri),
+ ContentKind.Packages, JavadocList(
+ "Packages", "Package",
+ m.packages.sortedBy { it.packageName }.map { p ->
+ RowJavadocListEntry(
+ LinkJavadocListEntry(p.name, setOf(p.dri), JavadocContentKind.PackageSummary, sourceSets),
+ p.brief()
+ )
+ }
+ ))
+ }
+
+ private fun contentForPackage(p: DPackage): JavadocContentNode =
+ JavadocContentGroup(
+ setOf(p.dri),
+ JavadocContentKind.PackageSummary,
+ p.sourceSets.toDisplaySourceSets()
+ ) {
+ title("Package ${p.name}", p.descriptionToContentNodes(), dri = setOf(p.dri), kind = ContentKind.Packages)
+ fun allClasslikes(c: DClasslike): List<DClasslike> = c.classlikes.flatMap { allClasslikes(it) } + c
+ val rootList = p.classlikes.map { allClasslikes(it) }.flatten().groupBy { it::class }.map { (key, value) ->
+ JavadocList(key.tabTitle, key.colTitle, value.map { c ->
+ RowJavadocListEntry(
+ LinkJavadocListEntry(c.name ?: "", setOf(c.dri), JavadocContentKind.Class, sourceSets),
+ c.brief()
+ )
+ })
+ }
+ rootList(setOf(p.dri), JavadocContentKind.Class, rootList)
+ }
+
+ private val KClass<out DClasslike>.colTitle: String
+ get() = when (this) {
+ DClass::class -> "Class"
+ DObject::class -> "Object"
+ DAnnotation::class -> "Annotation"
+ DEnum::class -> "Enum"
+ DInterface::class -> "Interface"
+ else -> ""
+ }
+
+ private val KClass<out DClasslike>.tabTitle: String
+ get() = "$colTitle Summary"
+
+ private fun contentForClasslike(c: DClasslike): JavadocContentNode =
+ JavadocContentGroup(
+ setOf(c.dri),
+ JavadocContentKind.Class,
+ c.sourceSets.toDisplaySourceSets()
+ ) {
+ title(
+ c.name.orEmpty(),
+ c.brief(),
+ documentationVersion,
+ parent = c.dri.packageName,
+ dri = setOf(c.dri),
+ kind = JavadocContentKind.Class
+ )
+ }
+
+ private fun DFunction.toJavadocFunction() = highestJvmSourceSet?.let { jvm ->
+ JavadocFunctionNode(
+ name = name,
+ dri = dri,
+ signature = signatureForNode(this, jvm),
+ brief = brief(jvm),
+ description = descriptionToContentNodes(jvm),
+ parameters = parameters.mapNotNull {
+ val signature = signatureForNode(it, jvm)
+ signature.modifiers?.let { type ->
+ JavadocParameterNode(
+ name = it.name.orEmpty(),
+ type = type,
+ description = it.brief(),
+ typeBound = it.type,
+ dri = it.dri,
+ extra = PropertyContainer.withAll(it.indexesInDocumentation())
+ )
+ }
+ },
+ returnTagContent = returnToContentNodes(jvm),
+ sinceTagContent = sinceToContentNodes(jvm),
+ extra = extra + indexesInDocumentation()
+ )
+ }
+
+ private val Documentable.highestJvmSourceSet
+ get() = sourceSets.let { sources ->
+ sources.firstOrNull { it != expectPresentInSet } ?: sources.firstOrNull()
+ }
+
+ private inline fun <reified T : TagWrapper> Documentable.findNodeInDocumentation(sourceSetData: DokkaSourceSet?): T? =
+ documentation[sourceSetData]?.firstChildOfTypeOrNull<T>()
+
+ private inline fun <reified T : TagWrapper> Documentable.findAllNodesInDocumentation(sourceSetData: DokkaSourceSet?): List<T> =
+ documentation[sourceSetData]?.childrenOfType<T>() ?: emptyList()
+
+ private fun Documentable.descriptionToContentNodes(sourceSet: DokkaSourceSet? = highestJvmSourceSet) =
+ contentNodesFromType<Description>(sourceSet)
+
+ private fun DParameter.paramsToContentNodes(sourceSet: DokkaSourceSet? = highestJvmSourceSet) =
+ contentNodesFromType<Param>(sourceSet)
+
+ private inline fun <reified T : TagWrapper> Documentable.contentNodesFromType(sourceSet: DokkaSourceSet?) =
+ findNodeInDocumentation<T>(sourceSet)?.let {
+ DocTagToContentConverter().buildContent(
+ it.root,
+ DCI(setOf(dri), JavadocContentKind.OverviewSummary),
+ sourceSets.toSet()
+ )
+ }.orEmpty()
+
+ private inline fun <reified T : TagWrapper> Documentable.allContentNodesFromType(sourceSet: DokkaSourceSet?) =
+ findAllNodesInDocumentation<T>(sourceSet).map {
+ DocTagToContentConverter().buildContent(
+ it.root,
+ DCI(setOf(dri), JavadocContentKind.OverviewSummary),
+ sourceSets.toSet()
+ )
+ }
+
+ public fun List<ContentNode>.nodeForJvm(jvm: DokkaSourceSet): ContentNode {
+ return firstOrNull { jvm.sourceSetID in it.sourceSets.computeSourceSetIds() }
+ ?: throw IllegalStateException("No source set found for ${jvm.sourceSetID} ")
+ }
+
+ private fun Documentable.brief(sourceSet: DokkaSourceSet? = highestJvmSourceSet): List<ContentNode> =
+ firstSentenceBriefFromContentNodes(descriptionToContentNodes(sourceSet))
+
+ private fun DParameter.brief(sourceSet: DokkaSourceSet? = highestJvmSourceSet): List<ContentNode> =
+ firstSentenceBriefFromContentNodes(paramsToContentNodes(sourceSet).dropWhile { it is ContentDRILink })
+
+ private fun ContentNode.asJavadocNode(): JavadocSignatureContentNode =
+ (this as