Skip to content

Commit

Permalink
Use included static values for external links
Browse files Browse the repository at this point in the history
  • Loading branch information
MarcinAman authored and kamildoleglo committed Oct 8, 2020
1 parent 914a6e1 commit 48bf482
Show file tree
Hide file tree
Showing 4 changed files with 33 additions and 36 deletions.
21 changes: 9 additions & 12 deletions plugins/base/src/main/kotlin/translators/psi/JavadocParser.kt
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,12 @@ import com.intellij.psi.impl.source.javadoc.PsiDocParamRef
import com.intellij.psi.impl.source.tree.JavaDocElementType
import com.intellij.psi.impl.source.tree.LeafPsiElement
import com.intellij.psi.javadoc.*
import com.intellij.psi.tree.IElementType
import com.intellij.psi.tree.java.IJavaDocElementType
import com.intellij.psi.util.PsiTreeUtil
import org.jetbrains.dokka.analysis.from
import org.jetbrains.dokka.links.DRI
import org.jetbrains.dokka.model.doc.*
import org.jetbrains.dokka.model.doc.Deprecated
import org.jetbrains.dokka.utilities.DokkaLogger
import org.jetbrains.kotlin.backend.common.onlyIf
import org.jetbrains.kotlin.idea.refactoring.fqName.getKotlinFqName
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.utils.addToStdlib.firstIsInstanceOrNull
Expand Down Expand Up @@ -140,8 +137,7 @@ class JavadocParser(
}

private fun PsiDocComment.getDescription(): Description? {
val nonEmptyDescriptionElements = descriptionElements.asIterable()
return convertJavadocElements(nonEmptyDescriptionElements).takeIf { it.isNotEmpty() }?.let {
return convertJavadocElements(descriptionElements.asIterable()).takeIf { it.isNotEmpty() }?.let {
Description(wrapTagIfNecessary(it))
}
}
Expand Down Expand Up @@ -169,17 +165,14 @@ class JavadocParser(
val dri = DRI.from(it)
driMap[dri.toString()] = dri
Pair(labelElement ?: listOf(defaultLabel()), dri.toString())
} ?: Pair(listOf(defaultLabel()), "UNRESOLVED_PSI_ELEMENT")).let { (label, dri) ->
} ?: Pair(listOf(defaultLabel()), UNRESOLVED_PSI_ELEMENT)).let { (label, dri) ->
"""<a data-dri=$dri>${label.joinToString(" ") { it.text }}</a>"""
}

private fun convertInlineDocTag(tag: PsiInlineDocTag) = when (tag.name) {
"link", "linkplain" -> {
tag.referenceElement()?.toDocumentationLinkString(tag.dataElements.filterIsInstance<PsiDocToken>())
}
"code", "literal" -> {
"<code data-inline>${tag.text}</code>"
}
"link", "linkplain" -> tag.referenceElement()
?.toDocumentationLinkString(tag.dataElements.filterIsInstance<PsiDocToken>())
"code", "literal" -> "<code data-inline>${tag.text}</code>"
"index" -> "<index>${tag.children.filterIsInstance<PsiDocTagValue>().joinToString { it.text }}</index>"
else -> tag.text
}
Expand Down Expand Up @@ -276,4 +269,8 @@ class JavadocParser(

private fun PsiDocTag.linkElement(): PsiElement? =
valueElement ?: dataElements.firstOrNull { it !is PsiWhiteSpace }

companion object {
private const val UNRESOLVED_PSI_ELEMENT = "UNRESOLVED_PSI_ELEMENT"
}
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package org.jetbrains.dokka.javadoc

import org.jetbrains.dokka.DokkaConfigurationImpl
import org.jetbrains.dokka.ExternalDocumentationLink
import org.jetbrains.dokka.*
import org.jetbrains.dokka.javadoc.pages.JavadocPageNode
import org.jetbrains.dokka.javadoc.renderer.JavadocContentToTemplateMapTranslator
import org.jetbrains.dokka.javadoc.JavadocPlugin
Expand All @@ -19,8 +18,8 @@ internal abstract class AbstractJavadocTemplateMapTest : AbstractCoreTest() {
sourceRoots = listOf("src")
analysisPlatform = "jvm"
externalDocumentationLinks = listOf(
ExternalDocumentationLink("https://docs.oracle.com/javase/8/docs/api/"),
ExternalDocumentationLink("https://kotlinlang.org/api/latest/jvm/stdlib/")
DokkaConfiguration.ExternalDocumentationLink.jdk(8),
DokkaConfiguration.ExternalDocumentationLink.kotlinStdlib()
)
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,26 +1,27 @@
package org.jetbrains.dokka.javadoc.location

import org.jetbrains.dokka.ExternalDocumentationLink
import org.jetbrains.dokka.DokkaConfiguration
import org.jetbrains.dokka.jdk
import org.jetbrains.dokka.kotlinStdlib
import org.jetbrains.dokka.model.doc.DocumentationLink
import org.jetbrains.dokka.model.doc.Text
import org.jetbrains.dokka.testApi.testRunner.AbstractCoreTest
import org.jetbrains.dokka.utilities.cast
import org.junit.jupiter.api.Test
import utils.TestOutputWriterPlugin
import kotlin.test.assertEquals

class JavadocLinkingTest : AbstractCoreTest() {

@Test
fun `linebroken link`() {
fun externalLink(link: String) = ExternalDocumentationLink(link)

val config = dokkaConfiguration {
sourceSets {
sourceSet {
sourceRoots = listOf("jvmSrc/")
externalDocumentationLinks = listOf(
externalLink("https://docs.oracle.com/javase/8/docs/api/"),
externalLink("https://kotlinlang.org/api/latest/jvm/stdlib/")
DokkaConfiguration.ExternalDocumentationLink.jdk(8),
DokkaConfiguration.ExternalDocumentationLink.kotlinStdlib(),
)
analysisPlatform = "jvm"
}
Expand All @@ -35,6 +36,7 @@ class JavadocLinkingTest : AbstractCoreTest() {
|class SomeClass {
| fun someFun(x: Int): Int = 1
|}
|
|/jvmSrc/javadoc/test/SomeJavaDocExample.java
|
|package example;
Expand All @@ -51,18 +53,21 @@ class JavadocLinkingTest : AbstractCoreTest() {
| public void someFunc(int integer, Object object) {
| }
|}
""".trimIndent(),
""".trimMargin(),
config,
cleanupOutput = false
pluginOverrides = listOf(TestOutputWriterPlugin())
) {
documentablesMergingStage = {
it.packages.single().classlikes.single { it.name == "SomeJavaDocExample" }.documentation.values.single().children.single().children.single {
it is DocumentationLink
}.children.single().cast<Text>().body.run {
assertEquals("someName(ads, dsa)", this)
}
it.packages.single()
.classlikes.single { it.name == "SomeJavaDocExample" }
.documentation.values.single()
.children.single()
.children.single {
it is DocumentationLink
}.children.single().cast<Text>().body.run {
assertEquals("someName(ads, dsa)", this)
}
}
}
}

}
Original file line number Diff line number Diff line change
@@ -1,11 +1,9 @@
package org.jetbrains.dokka.javadoc.location

import org.jetbrains.dokka.*
import org.jetbrains.dokka.javadoc.pages.JavadocClasslikePageNode
import org.jetbrains.dokka.javadoc.pages.JavadocPackagePageNode
import org.jetbrains.dokka.javadoc.renderer.JavadocContentToHtmlTranslator
import org.jetbrains.dokka.DokkaConfiguration
import org.jetbrains.dokka.ExternalDocumentationLink
import org.jetbrains.dokka.ExternalDocumentationLinkImpl
import org.jetbrains.dokka.javadoc.JavadocPlugin
import org.jetbrains.dokka.model.firstChildOfType
import org.jetbrains.dokka.pages.RootPageNode
Expand All @@ -19,16 +17,14 @@ import org.junit.jupiter.api.Assertions.assertEquals
class JavadocLocationTest : AbstractCoreTest() {

private fun locationTestInline(testHandler: (RootPageNode, DokkaContext) -> Unit) {
fun externalLink(link: String) = ExternalDocumentationLink(link)

val config = dokkaConfiguration {
format = "javadoc"
sourceSets {
sourceSet {
sourceRoots = listOf("jvmSrc/")
externalDocumentationLinks = listOf(
externalLink("https://docs.oracle.com/javase/8/docs/api/"),
externalLink("https://kotlinlang.org/api/latest/jvm/stdlib/")
DokkaConfiguration.ExternalDocumentationLink.jdk(8),
DokkaConfiguration.ExternalDocumentationLink.kotlinStdlib()
)
analysisPlatform = "jvm"
}
Expand Down

0 comments on commit 48bf482

Please sign in to comment.