aboutsummaryrefslogtreecommitdiff
path: root/plugins/base/src/main/kotlin/resolvers/external/javadoc
diff options
context:
space:
mode:
authorKamil Doległo <kamilok1965@interia.pl>2020-08-11 21:47:26 +0200
committerSebastian Sellmair <34319766+sellmair@users.noreply.github.com>2020-08-19 13:34:10 +0200
commit852a6ce6c0f43c9b2044320dcceb4c6cc0a3b302 (patch)
treefb95be79e816769ca5305cf3a601348549000c6d /plugins/base/src/main/kotlin/resolvers/external/javadoc
parent822653f017fa58352148e1c586690debb6773965 (diff)
downloaddokka-852a6ce6c0f43c9b2044320dcceb4c6cc0a3b302.tar.gz
dokka-852a6ce6c0f43c9b2044320dcceb4c6cc0a3b302.tar.bz2
dokka-852a6ce6c0f43c9b2044320dcceb4c6cc0a3b302.zip
Refactor location providers
Diffstat (limited to 'plugins/base/src/main/kotlin/resolvers/external/javadoc')
-rw-r--r--plugins/base/src/main/kotlin/resolvers/external/javadoc/JavadocExternalLocationProvider.kt31
-rw-r--r--plugins/base/src/main/kotlin/resolvers/external/javadoc/JavadocExternalLocationProviderFactory.kt25
2 files changed, 56 insertions, 0 deletions
diff --git a/plugins/base/src/main/kotlin/resolvers/external/javadoc/JavadocExternalLocationProvider.kt b/plugins/base/src/main/kotlin/resolvers/external/javadoc/JavadocExternalLocationProvider.kt
new file mode 100644
index 00000000..d42b5b5c
--- /dev/null
+++ b/plugins/base/src/main/kotlin/resolvers/external/javadoc/JavadocExternalLocationProvider.kt
@@ -0,0 +1,31 @@
+package org.jetbrains.dokka.base.resolvers.external.javadoc
+
+import org.jetbrains.dokka.base.resolvers.external.DefaultExternalLocationProvider
+import org.jetbrains.dokka.base.resolvers.shared.ExternalDocumentationInfo
+import org.jetbrains.dokka.links.DRI
+import org.jetbrains.dokka.plugability.DokkaContext
+import org.jetbrains.dokka.utilities.htmlEscape
+
+class JavadocExternalLocationProvider(
+ externalDocumentationInfo: ExternalDocumentationInfo,
+ val brackets: String,
+ val separator: String,
+ dokkaContext: DokkaContext
+) : DefaultExternalLocationProvider(externalDocumentationInfo, ".html", dokkaContext) {
+
+ override fun resolve(dri: DRI): String? {
+ val docURL = externalDocumentationInfo.documentationURL.toString().removeSuffix("/") + "/"
+ val packageLink = dri.packageName?.replace(".", "/")
+ if (dri.classNames == null) {
+ return "$docURL$packageLink/package-summary$extension".htmlEscape()
+ }
+ val classLink = if (packageLink == null) "${dri.classNames}$extension" else "$packageLink/${dri.classNames}$extension"
+ val callableChecked = dri.callable ?: return "$docURL$classLink".htmlEscape()
+
+ return ("$docURL$classLink#" +
+ callableChecked.name +
+ "${brackets.first()}" +
+ callableChecked.params.joinToString(separator) +
+ "${brackets.last()}").htmlEscape()
+ }
+} \ No newline at end of file
diff --git a/plugins/base/src/main/kotlin/resolvers/external/javadoc/JavadocExternalLocationProviderFactory.kt b/plugins/base/src/main/kotlin/resolvers/external/javadoc/JavadocExternalLocationProviderFactory.kt
new file mode 100644
index 00000000..1cfd73a8
--- /dev/null
+++ b/plugins/base/src/main/kotlin/resolvers/external/javadoc/JavadocExternalLocationProviderFactory.kt
@@ -0,0 +1,25 @@
+package org.jetbrains.dokka.base.resolvers.external.javadoc
+
+import org.jetbrains.dokka.base.resolvers.external.ExternalLocationProvider
+import org.jetbrains.dokka.base.resolvers.external.ExternalLocationProviderFactory
+import org.jetbrains.dokka.base.resolvers.external.ExternalLocationProviderFactoryWithCache
+import org.jetbrains.dokka.base.resolvers.shared.ExternalDocumentationInfo
+import org.jetbrains.dokka.base.resolvers.shared.RecognizedLinkFormat
+import org.jetbrains.dokka.plugability.DokkaContext
+
+class JavadocExternalLocationProviderFactory(val context: DokkaContext) :
+ ExternalLocationProviderFactory by ExternalLocationProviderFactoryWithCache(
+ object : ExternalLocationProviderFactory {
+ override fun getExternalLocationProvider(docInfo: ExternalDocumentationInfo): ExternalLocationProvider? =
+ when (docInfo.packageList.linkFormat) {
+ RecognizedLinkFormat.Javadoc1 ->
+ JavadocExternalLocationProvider(docInfo, "()", ", ", context) // Covers JDK 1 - 7
+ RecognizedLinkFormat.Javadoc8,
+ RecognizedLinkFormat.DokkaJavadoc ->
+ JavadocExternalLocationProvider(docInfo, "--", "-", context) // Covers JDK 8 - 9
+ RecognizedLinkFormat.Javadoc10 ->
+ JavadocExternalLocationProvider(docInfo, "()", ",", context) // Covers JDK 10
+ else -> null
+ }
+ }
+ ) \ No newline at end of file