aboutsummaryrefslogtreecommitdiff
path: root/plugins/base/src/main/kotlin/resolvers
diff options
context:
space:
mode:
authorIgnat Beresnev <ignat.beresnev@jetbrains.com>2023-08-31 20:16:01 +0200
committerGitHub <noreply@github.com>2023-08-31 20:16:01 +0200
commit02f30b142aa467d3a24cc52a1fe3f2fed7ea1e33 (patch)
tree66f6d6f089a93b863bf1144666491eca6729ad05 /plugins/base/src/main/kotlin/resolvers
parent6a181a7a2b03ec263788d137610e86937a57d434 (diff)
downloaddokka-02f30b142aa467d3a24cc52a1fe3f2fed7ea1e33.tar.gz
dokka-02f30b142aa467d3a24cc52a1fe3f2fed7ea1e33.tar.bz2
dokka-02f30b142aa467d3a24cc52a1fe3f2fed7ea1e33.zip
Enable explicit API mode (#3139)
Diffstat (limited to 'plugins/base/src/main/kotlin/resolvers')
-rw-r--r--plugins/base/src/main/kotlin/resolvers/anchors/AnchorsHint.kt6
-rw-r--r--plugins/base/src/main/kotlin/resolvers/external/DefaultExternalLocationProvider.kt10
-rw-r--r--plugins/base/src/main/kotlin/resolvers/external/DefaultExternalLocationProviderFactory.kt31
-rw-r--r--plugins/base/src/main/kotlin/resolvers/external/Dokka010ExternalLocationProvider.kt10
-rw-r--r--plugins/base/src/main/kotlin/resolvers/external/ExternalLocationProvider.kt4
-rw-r--r--plugins/base/src/main/kotlin/resolvers/external/ExternalLocationProviderFactory.kt4
-rw-r--r--plugins/base/src/main/kotlin/resolvers/external/ExternalLocationProviderFactoryWithCache.kt5
-rw-r--r--plugins/base/src/main/kotlin/resolvers/external/javadoc/AndroidExternalLocationProvider.kt4
-rw-r--r--plugins/base/src/main/kotlin/resolvers/external/javadoc/JavadocExternalLocationProvider.kt17
-rw-r--r--plugins/base/src/main/kotlin/resolvers/external/javadoc/JavadocExternalLocationProviderFactory.kt44
-rw-r--r--plugins/base/src/main/kotlin/resolvers/local/DefaultLocationProvider.kt5
-rw-r--r--plugins/base/src/main/kotlin/resolvers/local/DokkaBaseLocationProvider.kt4
-rw-r--r--plugins/base/src/main/kotlin/resolvers/local/DokkaLocationProvider.kt14
-rw-r--r--plugins/base/src/main/kotlin/resolvers/local/DokkaLocationProviderFactory.kt10
-rw-r--r--plugins/base/src/main/kotlin/resolvers/local/LocationProvider.kt29
-rw-r--r--plugins/base/src/main/kotlin/resolvers/local/LocationProviderFactory.kt4
-rw-r--r--plugins/base/src/main/kotlin/resolvers/shared/ExternalDocumentation.kt2
-rw-r--r--plugins/base/src/main/kotlin/resolvers/shared/LinkFormat.kt6
-rw-r--r--plugins/base/src/main/kotlin/resolvers/shared/PackageList.kt20
-rw-r--r--plugins/base/src/main/kotlin/resolvers/shared/RecognizedLinkFormat.kt14
20 files changed, 138 insertions, 105 deletions
diff --git a/plugins/base/src/main/kotlin/resolvers/anchors/AnchorsHint.kt b/plugins/base/src/main/kotlin/resolvers/anchors/AnchorsHint.kt
index a50fdcb2..c9218947 100644
--- a/plugins/base/src/main/kotlin/resolvers/anchors/AnchorsHint.kt
+++ b/plugins/base/src/main/kotlin/resolvers/anchors/AnchorsHint.kt
@@ -9,11 +9,11 @@ import org.jetbrains.dokka.model.properties.ExtraProperty
import org.jetbrains.dokka.pages.ContentNode
import org.jetbrains.dokka.pages.Kind
-data class SymbolAnchorHint(val anchorName: String, val contentKind: Kind) : ExtraProperty<ContentNode> {
+public data class SymbolAnchorHint(val anchorName: String, val contentKind: Kind) : ExtraProperty<ContentNode> {
override val key: ExtraProperty.Key<ContentNode, SymbolAnchorHint> = SymbolAnchorHint
- companion object : ExtraProperty.Key<ContentNode, SymbolAnchorHint> {
- fun from(d: Documentable, contentKind: Kind): SymbolAnchorHint? =
+ public companion object : ExtraProperty.Key<ContentNode, SymbolAnchorHint> {
+ public fun from(d: Documentable, contentKind: Kind): SymbolAnchorHint? =
d.name?.let { SymbolAnchorHint(it, contentKind) }
}
}
diff --git a/plugins/base/src/main/kotlin/resolvers/external/DefaultExternalLocationProvider.kt b/plugins/base/src/main/kotlin/resolvers/external/DefaultExternalLocationProvider.kt
index 1e4cc8dd..32825303 100644
--- a/plugins/base/src/main/kotlin/resolvers/external/DefaultExternalLocationProvider.kt
+++ b/plugins/base/src/main/kotlin/resolvers/external/DefaultExternalLocationProvider.kt
@@ -9,12 +9,12 @@ import org.jetbrains.dokka.base.resolvers.shared.ExternalDocumentation
import org.jetbrains.dokka.links.DRI
import org.jetbrains.dokka.plugability.DokkaContext
-open class DefaultExternalLocationProvider(
- val externalDocumentation: ExternalDocumentation,
- val extension: String,
- val dokkaContext: DokkaContext
+public open class DefaultExternalLocationProvider(
+ public val externalDocumentation: ExternalDocumentation,
+ public val extension: String,
+ public val dokkaContext: DokkaContext
) : ExternalLocationProvider {
- val docURL = externalDocumentation.documentationURL.toString().removeSuffix("/") + "/"
+ public val docURL: String = externalDocumentation.documentationURL.toString().removeSuffix("/") + "/"
override fun resolve(dri: DRI): String? {
externalDocumentation.packageList.locations[dri.toString()]?.let { path -> return "$docURL$path" }
diff --git a/plugins/base/src/main/kotlin/resolvers/external/DefaultExternalLocationProviderFactory.kt b/plugins/base/src/main/kotlin/resolvers/external/DefaultExternalLocationProviderFactory.kt
index 62135446..09ddca01 100644
--- a/plugins/base/src/main/kotlin/resolvers/external/DefaultExternalLocationProviderFactory.kt
+++ b/plugins/base/src/main/kotlin/resolvers/external/DefaultExternalLocationProviderFactory.kt
@@ -7,17 +7,22 @@ package org.jetbrains.dokka.base.resolvers.external
import org.jetbrains.dokka.base.resolvers.shared.RecognizedLinkFormat
import org.jetbrains.dokka.plugability.DokkaContext
-class DefaultExternalLocationProviderFactory(val context: DokkaContext) :
- ExternalLocationProviderFactory by ExternalLocationProviderFactoryWithCache(
- { doc ->
- when (doc.packageList.linkFormat) {
- RecognizedLinkFormat.KotlinWebsite,
- RecognizedLinkFormat.KotlinWebsiteHtml,
- RecognizedLinkFormat.DokkaOldHtml -> Dokka010ExternalLocationProvider(doc, ".html", context)
- RecognizedLinkFormat.DokkaHtml -> DefaultExternalLocationProvider(doc, ".html", context)
- RecognizedLinkFormat.DokkaGFM,
- RecognizedLinkFormat.DokkaJekyll -> DefaultExternalLocationProvider(doc, ".md", context)
- else -> null
- }
+public class DefaultExternalLocationProviderFactory(
+ public val context: DokkaContext,
+) : ExternalLocationProviderFactory by ExternalLocationProviderFactoryWithCache(
+ { doc ->
+ when (doc.packageList.linkFormat) {
+ RecognizedLinkFormat.KotlinWebsite,
+ RecognizedLinkFormat.KotlinWebsiteHtml,
+ RecognizedLinkFormat.DokkaOldHtml,
+ -> Dokka010ExternalLocationProvider(doc, ".html", context)
+
+ RecognizedLinkFormat.DokkaHtml -> DefaultExternalLocationProvider(doc, ".html", context)
+ RecognizedLinkFormat.DokkaGFM,
+ RecognizedLinkFormat.DokkaJekyll,
+ -> DefaultExternalLocationProvider(doc, ".md", context)
+
+ else -> null
}
- )
+ }
+)
diff --git a/plugins/base/src/main/kotlin/resolvers/external/Dokka010ExternalLocationProvider.kt b/plugins/base/src/main/kotlin/resolvers/external/Dokka010ExternalLocationProvider.kt
index 0e94ceb4..f887c9bc 100644
--- a/plugins/base/src/main/kotlin/resolvers/external/Dokka010ExternalLocationProvider.kt
+++ b/plugins/base/src/main/kotlin/resolvers/external/Dokka010ExternalLocationProvider.kt
@@ -10,12 +10,12 @@ import org.jetbrains.dokka.links.Callable
import org.jetbrains.dokka.links.DRI
import org.jetbrains.dokka.plugability.DokkaContext
-open class Dokka010ExternalLocationProvider(
- val externalDocumentation: ExternalDocumentation,
- val extension: String,
- val dokkaContext: DokkaContext
+public open class Dokka010ExternalLocationProvider(
+ public val externalDocumentation: ExternalDocumentation,
+ public val extension: String,
+ public val dokkaContext: DokkaContext
) : ExternalLocationProvider {
- val docURL = externalDocumentation.documentationURL.toString().removeSuffix("/") + "/"
+ public val docURL: String = externalDocumentation.documentationURL.toString().removeSuffix("/") + "/"
override fun resolve(dri: DRI): String? {
diff --git a/plugins/base/src/main/kotlin/resolvers/external/ExternalLocationProvider.kt b/plugins/base/src/main/kotlin/resolvers/external/ExternalLocationProvider.kt
index 599dfc87..238b6342 100644
--- a/plugins/base/src/main/kotlin/resolvers/external/ExternalLocationProvider.kt
+++ b/plugins/base/src/main/kotlin/resolvers/external/ExternalLocationProvider.kt
@@ -9,10 +9,10 @@ import org.jetbrains.dokka.links.DRI
/**
* Provides the path to the page documenting a [DRI] in an external documentation source
*/
-fun interface ExternalLocationProvider {
+public fun interface ExternalLocationProvider {
/**
* @return Path to the page containing the [dri] or null if the path cannot be created
* (eg. when the package-list does not contain [dri]'s package)
*/
- fun resolve(dri: DRI): String?
+ public fun resolve(dri: DRI): String?
}
diff --git a/plugins/base/src/main/kotlin/resolvers/external/ExternalLocationProviderFactory.kt b/plugins/base/src/main/kotlin/resolvers/external/ExternalLocationProviderFactory.kt
index 517024e4..952f4d51 100644
--- a/plugins/base/src/main/kotlin/resolvers/external/ExternalLocationProviderFactory.kt
+++ b/plugins/base/src/main/kotlin/resolvers/external/ExternalLocationProviderFactory.kt
@@ -6,6 +6,6 @@ package org.jetbrains.dokka.base.resolvers.external
import org.jetbrains.dokka.base.resolvers.shared.ExternalDocumentation
-fun interface ExternalLocationProviderFactory {
- fun getExternalLocationProvider(doc: ExternalDocumentation): ExternalLocationProvider?
+public fun interface ExternalLocationProviderFactory {
+ public fun getExternalLocationProvider(doc: ExternalDocumentation): ExternalLocationProvider?
}
diff --git a/plugins/base/src/main/kotlin/resolvers/external/ExternalLocationProviderFactoryWithCache.kt b/plugins/base/src/main/kotlin/resolvers/external/ExternalLocationProviderFactoryWithCache.kt
index 12b1b7eb..0b56e174 100644
--- a/plugins/base/src/main/kotlin/resolvers/external/ExternalLocationProviderFactoryWithCache.kt
+++ b/plugins/base/src/main/kotlin/resolvers/external/ExternalLocationProviderFactoryWithCache.kt
@@ -7,8 +7,9 @@ package org.jetbrains.dokka.base.resolvers.external
import org.jetbrains.dokka.base.resolvers.shared.ExternalDocumentation
import java.util.concurrent.ConcurrentHashMap
-class ExternalLocationProviderFactoryWithCache(val ext: ExternalLocationProviderFactory) :
- ExternalLocationProviderFactory {
+public class ExternalLocationProviderFactoryWithCache(
+ public val ext: ExternalLocationProviderFactory
+) : ExternalLocationProviderFactory {
private val locationProviders = ConcurrentHashMap<ExternalDocumentation, CacheWrapper>()
diff --git a/plugins/base/src/main/kotlin/resolvers/external/javadoc/AndroidExternalLocationProvider.kt b/plugins/base/src/main/kotlin/resolvers/external/javadoc/AndroidExternalLocationProvider.kt
index e90adf6f..8c18be0c 100644
--- a/plugins/base/src/main/kotlin/resolvers/external/javadoc/AndroidExternalLocationProvider.kt
+++ b/plugins/base/src/main/kotlin/resolvers/external/javadoc/AndroidExternalLocationProvider.kt
@@ -8,11 +8,11 @@ import org.jetbrains.dokka.base.resolvers.shared.ExternalDocumentation
import org.jetbrains.dokka.links.Callable
import org.jetbrains.dokka.plugability.DokkaContext
-open class AndroidExternalLocationProvider(
+public open class AndroidExternalLocationProvider(
externalDocumentation: ExternalDocumentation,
dokkaContext: DokkaContext
) : JavadocExternalLocationProvider(externalDocumentation, "", "", dokkaContext) {
- override fun anchorPart(callable: Callable) = callable.name.toLowerCase()
+ override fun anchorPart(callable: Callable): String = callable.name.toLowerCase()
}
diff --git a/plugins/base/src/main/kotlin/resolvers/external/javadoc/JavadocExternalLocationProvider.kt b/plugins/base/src/main/kotlin/resolvers/external/javadoc/JavadocExternalLocationProvider.kt
index d7351556..65ee0e02 100644
--- a/plugins/base/src/main/kotlin/resolvers/external/javadoc/JavadocExternalLocationProvider.kt
+++ b/plugins/base/src/main/kotlin/resolvers/external/javadoc/JavadocExternalLocationProvider.kt
@@ -13,10 +13,10 @@ import org.jetbrains.dokka.links.EnumEntryDRIExtra
import org.jetbrains.dokka.plugability.DokkaContext
import org.jetbrains.dokka.utilities.htmlEscape
-open class JavadocExternalLocationProvider(
+public open class JavadocExternalLocationProvider(
externalDocumentation: ExternalDocumentation,
- val brackets: String,
- val separator: String,
+ public val brackets: String,
+ public val separator: String,
dokkaContext: DokkaContext
) : DefaultExternalLocationProvider(externalDocumentation, ".html", dokkaContext) {
@@ -53,9 +53,10 @@ open class JavadocExternalLocationProvider(
return ("$docWithModule$classLink#" + anchorPart(callableChecked)).htmlEscape()
}
- protected open fun anchorPart(callable: Callable) = callable.name +
- "${brackets.first()}" +
- callable.params.joinToString(separator) +
- "${brackets.last()}"
-
+ protected open fun anchorPart(callable: Callable): String {
+ return callable.name +
+ "${brackets.first()}" +
+ callable.params.joinToString(separator) +
+ "${brackets.last()}"
+ }
}
diff --git a/plugins/base/src/main/kotlin/resolvers/external/javadoc/JavadocExternalLocationProviderFactory.kt b/plugins/base/src/main/kotlin/resolvers/external/javadoc/JavadocExternalLocationProviderFactory.kt
index 6b94a75b..dc184e49 100644
--- a/plugins/base/src/main/kotlin/resolvers/external/javadoc/JavadocExternalLocationProviderFactory.kt
+++ b/plugins/base/src/main/kotlin/resolvers/external/javadoc/JavadocExternalLocationProviderFactory.kt
@@ -12,24 +12,28 @@ import org.jetbrains.dokka.base.resolvers.external.ExternalLocationProviderFacto
import org.jetbrains.dokka.base.resolvers.shared.RecognizedLinkFormat
import org.jetbrains.dokka.plugability.DokkaContext
-class JavadocExternalLocationProviderFactory(val context: DokkaContext) :
- ExternalLocationProviderFactory by ExternalLocationProviderFactoryWithCache(
- { doc ->
- when (doc.packageList.url) {
- DokkaConfiguration.ExternalDocumentationLink.androidX().packageListUrl,
- DokkaConfiguration.ExternalDocumentationLink.androidSdk().packageListUrl ->
- AndroidExternalLocationProvider(doc, context)
- else ->
- when (doc.packageList.linkFormat) {
- RecognizedLinkFormat.Javadoc1 ->
- JavadocExternalLocationProvider(doc, "()", ", ", context) // Covers JDK 1 - 7
- RecognizedLinkFormat.Javadoc8 ->
- JavadocExternalLocationProvider(doc, "--", "-", context) // Covers JDK 8 - 9
- RecognizedLinkFormat.Javadoc10,
- RecognizedLinkFormat.DokkaJavadoc ->
- JavadocExternalLocationProvider(doc, "()", ",", context) // Covers JDK 10
- else -> null
- }
- }
+public class JavadocExternalLocationProviderFactory(
+ public val context: DokkaContext,
+) : ExternalLocationProviderFactory by ExternalLocationProviderFactoryWithCache(
+ { doc ->
+ when (doc.packageList.url) {
+ DokkaConfiguration.ExternalDocumentationLink.androidX().packageListUrl,
+ DokkaConfiguration.ExternalDocumentationLink.androidSdk().packageListUrl,
+ ->
+ AndroidExternalLocationProvider(doc, context)
+
+ else ->
+ when (doc.packageList.linkFormat) {
+ RecognizedLinkFormat.Javadoc1 ->
+ JavadocExternalLocationProvider(doc, "()", ", ", context) // Covers JDK 1 - 7
+ RecognizedLinkFormat.Javadoc8 ->
+ JavadocExternalLocationProvider(doc, "--", "-", context) // Covers JDK 8 - 9
+ RecognizedLinkFormat.Javadoc10,
+ RecognizedLinkFormat.DokkaJavadoc,
+ ->
+ JavadocExternalLocationProvider(doc, "()", ",", context) // Covers JDK 10
+ else -> null
+ }
}
- )
+ }
+)
diff --git a/plugins/base/src/main/kotlin/resolvers/local/DefaultLocationProvider.kt b/plugins/base/src/main/kotlin/resolvers/local/DefaultLocationProvider.kt
index 7b9256c2..24d0f13e 100644
--- a/plugins/base/src/main/kotlin/resolvers/local/DefaultLocationProvider.kt
+++ b/plugins/base/src/main/kotlin/resolvers/local/DefaultLocationProvider.kt
@@ -8,6 +8,7 @@ import org.jetbrains.dokka.base.DokkaBase
import org.jetbrains.dokka.base.resolvers.external.DefaultExternalLocationProvider
import org.jetbrains.dokka.base.resolvers.external.Dokka010ExternalLocationProvider
import org.jetbrains.dokka.base.resolvers.external.ExternalLocationProvider
+import org.jetbrains.dokka.base.resolvers.external.ExternalLocationProviderFactory
import org.jetbrains.dokka.base.resolvers.external.javadoc.AndroidExternalLocationProvider
import org.jetbrains.dokka.base.resolvers.external.javadoc.JavadocExternalLocationProvider
import org.jetbrains.dokka.base.resolvers.shared.ExternalDocumentation
@@ -19,11 +20,11 @@ import org.jetbrains.dokka.plugability.DokkaContext
import org.jetbrains.dokka.plugability.plugin
import org.jetbrains.dokka.plugability.query
-abstract class DefaultLocationProvider(
+public abstract class DefaultLocationProvider(
protected val pageGraphRoot: RootPageNode,
protected val dokkaContext: DokkaContext
) : LocationProvider {
- protected val externalLocationProviderFactories =
+ protected val externalLocationProviderFactories: List<ExternalLocationProviderFactory> =
dokkaContext.plugin<DokkaBase>().query { externalLocationProviderFactory }
protected val externalLocationProviders: Map<ExternalDocumentation, ExternalLocationProvider?> = dokkaContext
diff --git a/plugins/base/src/main/kotlin/resolvers/local/DokkaBaseLocationProvider.kt b/plugins/base/src/main/kotlin/resolvers/local/DokkaBaseLocationProvider.kt
index 7fe763d9..ca3786ad 100644
--- a/plugins/base/src/main/kotlin/resolvers/local/DokkaBaseLocationProvider.kt
+++ b/plugins/base/src/main/kotlin/resolvers/local/DokkaBaseLocationProvider.kt
@@ -11,7 +11,7 @@ import org.jetbrains.dokka.pages.RootPageNode
import org.jetbrains.dokka.plugability.DokkaContext
import org.jetbrains.dokka.utilities.urlEncoded
-abstract class DokkaBaseLocationProvider(
+public abstract class DokkaBaseLocationProvider(
pageGraphRoot: RootPageNode,
dokkaContext: DokkaContext
) : DefaultLocationProvider(pageGraphRoot, dokkaContext) {
@@ -21,7 +21,7 @@ abstract class DokkaBaseLocationProvider(
* The idea is to make them as short as possible and just use a hashCode from sourcesets in order to match the
* 2040 characters limit
*/
- open fun anchorForDCI(dci: DCI, sourceSets: Set<DisplaySourceSet>): String =
+ public open fun anchorForDCI(dci: DCI, sourceSets: Set<DisplaySourceSet>): String =
(dci.dri.shortenToUrl().toString() + "/" + dci.kind + "/" + sourceSets.shortenToUrl()).urlEncoded()
}
diff --git a/plugins/base/src/main/kotlin/resolvers/local/DokkaLocationProvider.kt b/plugins/base/src/main/kotlin/resolvers/local/DokkaLocationProvider.kt
index e6508d0e..aedbfb88 100644
--- a/plugins/base/src/main/kotlin/resolvers/local/DokkaLocationProvider.kt
+++ b/plugins/base/src/main/kotlin/resolvers/local/DokkaLocationProvider.kt
@@ -13,12 +13,12 @@ import org.jetbrains.dokka.pages.*
import org.jetbrains.dokka.plugability.DokkaContext
import java.util.*
-open class DokkaLocationProvider(
+public open class DokkaLocationProvider(
pageGraphRoot: RootPageNode,
dokkaContext: DokkaContext,
- val extension: String = ".html"
+ public val extension: String = ".html"
) : DokkaBaseLocationProvider(pageGraphRoot, dokkaContext) {
- protected open val PAGE_WITH_CHILDREN_SUFFIX = "index"
+ protected open val PAGE_WITH_CHILDREN_SUFFIX: String = "index"
protected open val pathsIndex: Map<PageNode, List<String>> = IdentityHashMap<PageNode, List<String>>().apply {
fun registerPath(page: PageNode, prefix: List<String>) {
@@ -75,7 +75,7 @@ open class DokkaLocationProvider(
}
}.toMap()
- override fun resolve(node: PageNode, context: PageNode?, skipExtension: Boolean) =
+ override fun resolve(node: PageNode, context: PageNode?, skipExtension: Boolean): String =
pathTo(node, context) + if (!skipExtension) extension else ""
override fun resolve(dri: DRI, sourceSets: Set<DisplaySourceSet>, context: PageNode?): String? =
@@ -158,13 +158,13 @@ open class DokkaLocationProvider(
protected data class PageWithKind(val page: ContentPage, val kind: Kind)
- companion object {
- val reservedFilenames = setOf("index", "con", "aux", "lst", "prn", "nul", "eof", "inp", "out")
+ public companion object {
+ public val reservedFilenames: Set<String> = setOf("index", "con", "aux", "lst", "prn", "nul", "eof", "inp", "out")
//Taken from: https://stackoverflow.com/questions/1976007/what-characters-are-forbidden-in-windows-and-linux-directory-names
internal val reservedCharacters = setOf('|', '>', '<', '*', ':', '"', '?', '%')
- fun identifierToFilename(name: String): String {
+ public fun identifierToFilename(name: String): String {
if (name.isEmpty()) return "--root--"
return sanitizeFileName(name, reservedFilenames, reservedCharacters)
}
diff --git a/plugins/base/src/main/kotlin/resolvers/local/DokkaLocationProviderFactory.kt b/plugins/base/src/main/kotlin/resolvers/local/DokkaLocationProviderFactory.kt
index 81602589..bd9fa1bb 100644
--- a/plugins/base/src/main/kotlin/resolvers/local/DokkaLocationProviderFactory.kt
+++ b/plugins/base/src/main/kotlin/resolvers/local/DokkaLocationProviderFactory.kt
@@ -8,11 +8,15 @@ import org.jetbrains.dokka.pages.RootPageNode
import org.jetbrains.dokka.plugability.DokkaContext
import java.util.concurrent.ConcurrentHashMap
-class DokkaLocationProviderFactory(private val context: DokkaContext) : LocationProviderFactory {
+public class DokkaLocationProviderFactory(
+ private val context: DokkaContext
+) : LocationProviderFactory {
private val cache = ConcurrentHashMap<CacheWrapper, LocationProvider>()
- override fun getLocationProvider(pageNode: RootPageNode) = cache.computeIfAbsent(CacheWrapper(pageNode)) {
- DokkaLocationProvider(pageNode, context)
+ override fun getLocationProvider(pageNode: RootPageNode): LocationProvider {
+ return cache.computeIfAbsent(CacheWrapper(pageNode)) {
+ DokkaLocationProvider(pageNode, context)
+ }
}
private class CacheWrapper(val pageNode: RootPageNode) {
diff --git a/plugins/base/src/main/kotlin/resolvers/local/LocationProvider.kt b/plugins/base/src/main/kotlin/resolvers/local/LocationProvider.kt
index cfabff7e..dbcd5c76 100644
--- a/plugins/base/src/main/kotlin/resolvers/local/LocationProvider.kt
+++ b/plugins/base/src/main/kotlin/resolvers/local/LocationProvider.kt
@@ -10,11 +10,11 @@ import org.jetbrains.dokka.links.DRI
import org.jetbrains.dokka.model.DisplaySourceSet
import org.jetbrains.dokka.pages.PageNode
-interface LocationProvider {
- fun resolve(dri: DRI, sourceSets: Set<DisplaySourceSet>, context: PageNode? = null): String?
- fun resolve(node: PageNode, context: PageNode? = null, skipExtension: Boolean = false): String?
- fun pathToRoot(from: PageNode): String
- fun ancestors(node: PageNode): List<PageNode>
+public interface LocationProvider {
+ public fun resolve(dri: DRI, sourceSets: Set<DisplaySourceSet>, context: PageNode? = null): String?
+ public fun resolve(node: PageNode, context: PageNode? = null, skipExtension: Boolean = false): String?
+ public fun pathToRoot(from: PageNode): String
+ public fun ancestors(node: PageNode): List<PageNode>
/**
* This method should return guessed filesystem location for a given [DRI]
@@ -22,17 +22,26 @@ interface LocationProvider {
* generated package-list so it is ok if the path differs from the one returned by [resolve]
* @return Path to a giver [DRI] or null if path should not be considered for relocations
*/
- fun expectedLocationForDri(dri: DRI): String =
+ public fun expectedLocationForDri(dri: DRI): String =
(listOf(dri.packageName) +
dri.classNames?.split(".")?.map { identifierToFilename(it) }.orEmpty() +
listOf(dri.callable?.let { identifierToFilename(it.name) } ?: "index")
).filterNotNull().joinToString("/")
}
-fun LocationProvider.resolveOrThrow(dri: DRI, sourceSets: Set<DisplaySourceSet>, context: PageNode? = null): String =
- resolve(dri = dri, sourceSets = sourceSets, context = context)
+public fun LocationProvider.resolveOrThrow(
+ dri: DRI, sourceSets: Set<DisplaySourceSet>,
+ context: PageNode? = null
+): String {
+ return resolve(dri = dri, sourceSets = sourceSets, context = context)
?: throw DokkaException("Cannot resolve path for $dri")
+}
-fun LocationProvider.resolveOrThrow(node: PageNode, context: PageNode? = null, skipExtension: Boolean = false): String =
- resolve(node = node, context = context, skipExtension = skipExtension)
+public fun LocationProvider.resolveOrThrow(
+ node: PageNode,
+ context: PageNode? = null,
+ skipExtension: Boolean = false
+): String {
+ return resolve(node = node, context = context, skipExtension = skipExtension)
?: throw DokkaException("Cannot resolve path for ${node.name}")
+}
diff --git a/plugins/base/src/main/kotlin/resolvers/local/LocationProviderFactory.kt b/plugins/base/src/main/kotlin/resolvers/local/LocationProviderFactory.kt
index 247d4eaa..31cac868 100644
--- a/plugins/base/src/main/kotlin/resolvers/local/LocationProviderFactory.kt
+++ b/plugins/base/src/main/kotlin/resolvers/local/LocationProviderFactory.kt
@@ -6,6 +6,6 @@ package org.jetbrains.dokka.base.resolvers.local
import org.jetbrains.dokka.pages.RootPageNode
-fun interface LocationProviderFactory {
- fun getLocationProvider(pageNode: RootPageNode): LocationProvider
+public fun interface LocationProviderFactory {
+ public fun getLocationProvider(pageNode: RootPageNode): LocationProvider
}
diff --git a/plugins/base/src/main/kotlin/resolvers/shared/ExternalDocumentation.kt b/plugins/base/src/main/kotlin/resolvers/shared/ExternalDocumentation.kt
index ac9a189a..db0c5492 100644
--- a/plugins/base/src/main/kotlin/resolvers/shared/ExternalDocumentation.kt
+++ b/plugins/base/src/main/kotlin/resolvers/shared/ExternalDocumentation.kt
@@ -6,4 +6,4 @@ package org.jetbrains.dokka.base.resolvers.shared
import java.net.URL
-data class ExternalDocumentation(val documentationURL: URL, val packageList: PackageList)
+public data class ExternalDocumentation(val documentationURL: URL, val packageList: PackageList)
diff --git a/plugins/base/src/main/kotlin/resolvers/shared/LinkFormat.kt b/plugins/base/src/main/kotlin/resolvers/shared/LinkFormat.kt
index ad21ac6f..4f0d4932 100644
--- a/plugins/base/src/main/kotlin/resolvers/shared/LinkFormat.kt
+++ b/plugins/base/src/main/kotlin/resolvers/shared/LinkFormat.kt
@@ -4,7 +4,7 @@
package org.jetbrains.dokka.base.resolvers.shared
-interface LinkFormat {
- val formatName: String
- val linkExtension: String
+public interface LinkFormat {
+ public val formatName: String
+ public val linkExtension: String
}
diff --git a/plugins/base/src/main/kotlin/resolvers/shared/PackageList.kt b/plugins/base/src/main/kotlin/resolvers/shared/PackageList.kt
index ce45db98..8297f875 100644
--- a/plugins/base/src/main/kotlin/resolvers/shared/PackageList.kt
+++ b/plugins/base/src/main/kotlin/resolvers/shared/PackageList.kt
@@ -6,9 +6,9 @@ package org.jetbrains.dokka.base.resolvers.shared
import java.net.URL
-typealias Module = String
+public typealias Module = String
-data class PackageList(
+public data class PackageList(
val linkFormat: RecognizedLinkFormat,
val modules: Map<Module, Set<String>>,
val locations: Map<String, String>,
@@ -17,17 +17,19 @@ data class PackageList(
val packages: Set<String>
get() = modules.values.flatten().toSet()
- fun moduleFor(packageName: String) = modules.asSequence()
+ public fun moduleFor(packageName: String): Module? {
+ return modules.asSequence()
.filter { it.value.contains(packageName) }
.firstOrNull()?.key
+ }
- companion object {
- const val PACKAGE_LIST_NAME = "package-list"
- const val MODULE_DELIMITER = "module:"
- const val DOKKA_PARAM_PREFIX = "\$dokka"
- const val SINGLE_MODULE_NAME = ""
+ public companion object {
+ public const val PACKAGE_LIST_NAME: String = "package-list"
+ public const val MODULE_DELIMITER: String = "module:"
+ public const val DOKKA_PARAM_PREFIX: String = "\$dokka"
+ public const val SINGLE_MODULE_NAME: String = ""
- fun load(url: URL, jdkVersion: Int, offlineMode: Boolean = false): PackageList? {
+ public fun load(url: URL, jdkVersion: Int, offlineMode: Boolean = false): PackageList? {
if (offlineMode && url.protocol.toLowerCase() != "file")
return null
diff --git a/plugins/base/src/main/kotlin/resolvers/shared/RecognizedLinkFormat.kt b/plugins/base/src/main/kotlin/resolvers/shared/RecognizedLinkFormat.kt
index 7902fd09..4810c9e5 100644
--- a/plugins/base/src/main/kotlin/resolvers/shared/RecognizedLinkFormat.kt
+++ b/plugins/base/src/main/kotlin/resolvers/shared/RecognizedLinkFormat.kt
@@ -4,7 +4,10 @@
package org.jetbrains.dokka.base.resolvers.shared
-enum class RecognizedLinkFormat(override val formatName: String, override val linkExtension: String) : LinkFormat {
+public enum class RecognizedLinkFormat(
+ override val formatName: String,
+ override val linkExtension: String
+) : LinkFormat {
DokkaHtml("html-v1", "html"),
DokkaJavadoc("javadoc-v1", "html"),
DokkaGFM("gfm-v1", "md"),
@@ -16,8 +19,11 @@ enum class RecognizedLinkFormat(override val formatName: String, override val li
KotlinWebsite("kotlin-website", "html"),
KotlinWebsiteHtml("kotlin-website-html", "html");
- companion object {
- fun fromString(formatName: String) =
- values().firstOrNull { it.formatName == formatName }
+ public companion object {
+ private val values = values()
+
+ public fun fromString(formatName: String): RecognizedLinkFormat? {
+ return values.firstOrNull { it.formatName == formatName }
+ }
}
}