From 721e0247e1a633882cb89e9c18d6be332054e87e Mon Sep 17 00:00:00 2001 From: vmishenev Date: Fri, 20 Aug 2021 02:14:36 +0300 Subject: Handle `@link` tag --- .../src/main/kotlin/translators/psi/parsers/JavadocParser.kt | 11 ++++++----- .../src/test/kotlin/content/params/ContentForParamsTest.kt | 7 +++++-- .../jetbrains/dokka/javadoc/location/JavadocLinkingTest.kt | 2 +- 3 files changed, 12 insertions(+), 8 deletions(-) (limited to 'plugins') diff --git a/plugins/base/src/main/kotlin/translators/psi/parsers/JavadocParser.kt b/plugins/base/src/main/kotlin/translators/psi/parsers/JavadocParser.kt index 8bc950b7..6de3e0e0 100644 --- a/plugins/base/src/main/kotlin/translators/psi/parsers/JavadocParser.kt +++ b/plugins/base/src/main/kotlin/translators/psi/parsers/JavadocParser.kt @@ -312,9 +312,8 @@ class JavadocParser( } private fun PsiElement.toDocumentationLinkString( - labelElement: List? = null + label: String = "" ): String { - val label = labelElement?.toList().takeUnless { it.isNullOrEmpty() } ?: listOf(defaultLabel()) val dri = reference?.resolve()?.takeIf { it !is PsiParameter }?.let { val dri = DRI.from(it) @@ -322,7 +321,7 @@ class JavadocParser( dri.toString() } ?: UNRESOLVED_PSI_ELEMENT - return """${label.joinToString(" ") { it.text }}""" + return """${label.ifBlank{ defaultLabel().text }}""" } private fun convertInlineDocTag( @@ -332,7 +331,9 @@ class JavadocParser( ) = when (tag.name) { "link", "linkplain" -> tag.referenceElement() - ?.toDocumentationLinkString(tag.dataElements.filterIsInstance()) + ?.toDocumentationLinkString(tag.dataElements.filterIsInstance().joinToString("") { + it.stringifyElementAsText(keepFormatting = true).orEmpty() + }) "code" -> "${dataElementsAsText(tag)}" "literal" -> "${dataElementsAsText(tag)}" "index" -> "${tag.children.filterIsInstance().joinToString { it.text }}" @@ -345,7 +346,7 @@ class JavadocParser( private fun dataElementsAsText(tag: PsiInlineDocTag) = tag.dataElements.joinToString("") { - it.stringifyElementAsText(keepFormatting = true).toString() + it.stringifyElementAsText(keepFormatting = true).orEmpty() }.htmlEscape() private fun createLink(element: Element, children: List): DocTag { diff --git a/plugins/base/src/test/kotlin/content/params/ContentForParamsTest.kt b/plugins/base/src/test/kotlin/content/params/ContentForParamsTest.kt index f83ca55d..1a6dd6de 100644 --- a/plugins/base/src/test/kotlin/content/params/ContentForParamsTest.kt +++ b/plugins/base/src/test/kotlin/content/params/ContentForParamsTest.kt @@ -256,14 +256,15 @@ class ContentForParamsTest : BaseAbstractTest() { |/src/main/java/sample/DocGenProcessor.java |package sample; |/** - | * Return the target fragment set by {@link #setTargetFragment}. + | * Return the target fragment set by {@link #setTargetFragment} or {@link + | * #setTargetFragment}. | * | * @deprecated Instead of using a target fragment to pass results, the fragment requesting a | * result should use | * {@link java.util.HashMap#containsKey(java.lang.Object) FragmentManager#setFragmentResult(String, Bundle)} to deliver results to | * {@link java.util.HashMap#containsKey(java.lang.Object) FragmentResultListener} instances registered by other fragments via | * {@link java.util.HashMap#containsKey(java.lang.Object) FragmentManager#setFragmentResultListener(String, LifecycleOwner, - | * FragmentResultListener)}. + | * FragmentResultListener)}. | */ | public class DocGenProcessor { | public String setTargetFragment(){ @@ -286,6 +287,8 @@ class ContentForParamsTest : BaseAbstractTest() { comment { +"Return the target fragment set by " link { +"setTargetFragment" } + +" or " + link { +"setTargetFragment" } +"." } } diff --git a/plugins/javadoc/src/test/kotlin/org/jetbrains/dokka/javadoc/location/JavadocLinkingTest.kt b/plugins/javadoc/src/test/kotlin/org/jetbrains/dokka/javadoc/location/JavadocLinkingTest.kt index eb8abf9a..87c5246d 100644 --- a/plugins/javadoc/src/test/kotlin/org/jetbrains/dokka/javadoc/location/JavadocLinkingTest.kt +++ b/plugins/javadoc/src/test/kotlin/org/jetbrains/dokka/javadoc/location/JavadocLinkingTest.kt @@ -45,7 +45,7 @@ class JavadocLinkingTest : BaseAbstractTest() { | * Here comes some comment | * | * {@link example.SomeClass#someFun(int) someName(ads, - | * dsa)} + | * dsa)} | * | * longer comment | */ -- cgit