aboutsummaryrefslogtreecommitdiff
path: root/plugins/base/src/main/kotlin/translators
diff options
context:
space:
mode:
authorMarcin Aman <maman@virtuslab.com>2020-08-13 16:23:26 +0200
committerKamil Doległo <9080183+kamildoleglo@users.noreply.github.com>2020-10-08 19:05:41 +0200
commitaae7623bb459d2bcd1e1b492aadf5c3858a3e657 (patch)
treef404b8bb3caed3e394f7b54d7296836851cfb2ab /plugins/base/src/main/kotlin/translators
parentbe3fea152ae5dcec5ba9a29d86a69010d6b2e428 (diff)
downloaddokka-aae7623bb459d2bcd1e1b492aadf5c3858a3e657.tar.gz
dokka-aae7623bb459d2bcd1e1b492aadf5c3858a3e657.tar.bz2
dokka-aae7623bb459d2bcd1e1b492aadf5c3858a3e657.zip
Anchors hint
Diffstat (limited to 'plugins/base/src/main/kotlin/translators')
-rw-r--r--plugins/base/src/main/kotlin/translators/documentables/DefaultPageCreator.kt41
-rw-r--r--plugins/base/src/main/kotlin/translators/documentables/PageContentBuilder.kt11
2 files changed, 30 insertions, 22 deletions
diff --git a/plugins/base/src/main/kotlin/translators/documentables/DefaultPageCreator.kt b/plugins/base/src/main/kotlin/translators/documentables/DefaultPageCreator.kt
index f5fbb51e..caeb6bcb 100644
--- a/plugins/base/src/main/kotlin/translators/documentables/DefaultPageCreator.kt
+++ b/plugins/base/src/main/kotlin/translators/documentables/DefaultPageCreator.kt
@@ -18,6 +18,7 @@ import kotlin.reflect.full.isSubclassOf
import org.jetbrains.dokka.DokkaConfiguration.DokkaSourceSet
import org.jetbrains.dokka.base.resolvers.anchors.SymbolAnchorHint
import org.jetbrains.dokka.base.transformers.documentables.ClashingDriIdentifier
+import org.jetbrains.dokka.model.properties.plus
private typealias GroupedTags = Map<KClass<out TagWrapper>, List<Pair<DokkaSourceSet?, TagWrapper>>>
@@ -108,7 +109,7 @@ open class DefaultPageCreator(
}
+contentForComments(m)
- block("Packages", 2, ContentKind.Packages, m.packages, m.sourceSets.toSet()) {
+ block("Packages", 2, ContentKind.Packages, m.packages, m.sourceSets.toSet(), needsAnchors = true) {
val documentations = it.sourceSets.map { platform ->
it.descriptions[platform]?.also { it.root }
}
@@ -168,7 +169,7 @@ open class DefaultPageCreator(
extra = mainExtra + SimpleAttr.header("Properties")
) {
link(it.name, it.dri, kind = ContentKind.Main)
- sourceSetDependentHint(it.dri, it.sourceSets.toSet(), kind = ContentKind.SourceSetDependentHint) {
+ sourceSetDependentHint(it.dri, it.sourceSets.toSet(), kind = ContentKind.SourceSetDependentHint, extra = PropertyContainer.empty()) {
+buildSignature(it)
contentForBrief(it)
}
@@ -183,11 +184,10 @@ open class DefaultPageCreator(
}),
map.entries.flatMap { entry -> entry.value.map { Pair(entry.key, it) } }
.groupBy({ it.second }, { it.first }).map { (classlike, platforms) ->
- buildGroup(setOf(dri), platforms.toSet(), ContentKind.Inheritors) {
- link(
- classlike.classNames?.substringBeforeLast(".") ?: classlike.toString()
- .also { logger.warn("No class name found for DRI $classlike") }, classlike
- )
+ val label = classlike.classNames?.substringBeforeLast(".") ?: classlike.toString()
+ .also { logger.warn("No class name found for DRI $classlike") }
+ buildGroup(setOf(dri), platforms.toSet(), ContentKind.Inheritors, extra = mainExtra + SymbolAnchorHint(label)) {
+ link(label, classlike)
}
},
DCI(setOf(dri), ContentKind.Inheritors),
@@ -240,6 +240,7 @@ open class DefaultPageCreator(
ContentKind.Constructors,
c.constructors.filter { it.extra[PrimaryConstructorExtra] == null || it.documentation.isNotEmpty() },
c.sourceSets,
+ needsAnchors = true,
extra = PropertyContainer.empty<ContentNode>() + SimpleAttr.header("Constructors")
) {
link(it.name, it.dri, kind = ContentKind.Main)
@@ -247,7 +248,8 @@ open class DefaultPageCreator(
it.dri,
it.sourceSets.toSet(),
kind = ContentKind.SourceSetDependentHint,
- styles = emptySet()
+ styles = emptySet(),
+ extra = PropertyContainer.empty<ContentNode>()
) {
+buildSignature(it)
contentForBrief(it)
@@ -262,11 +264,12 @@ open class DefaultPageCreator(
c.entries,
c.sourceSets.toSet(),
needsSorting = false,
+ needsAnchors = true,
extra = mainExtra + SimpleAttr.header("Entries"),
styles = emptySet()
) {
link(it.name, it.dri)
- sourceSetDependentHint(it.dri, it.sourceSets.toSet(), kind = ContentKind.SourceSetDependentHint) {
+ sourceSetDependentHint(it.dri, it.sourceSets.toSet(), kind = ContentKind.SourceSetDependentHint, extra = PropertyContainer.empty<ContentNode>()) {
+buildSignature(it)
contentForBrief(it)
}
@@ -406,7 +409,7 @@ open class DefaultPageCreator(
buildGroup(
sourceSets = setOf(platform),
kind = ContentKind.Comment,
- styles = mainStyles + ContentStyle.RowTitle
+ styles = mainStyles + ContentStyle.RowTitle,
) {
if (it.address != null) link(
it.name,
@@ -526,16 +529,18 @@ open class DefaultPageCreator(
dri = elements.map { it.dri }.toSet(),
sourceSets = elements.flatMap { it.sourceSets }.toSet(),
kind = kind,
- styles = emptySet()
- ) {
- link(elementName.orEmpty(), elements.first().dri, kind = kind)
- divergentGroup(
- ContentDivergentGroup.GroupID(name),
- elements.map { it.dri }.toSet(),
- kind = kind
+ styles = emptySet(),
+ extra = elementName?.let { name -> extra + SymbolAnchorHint(name) } ?: extra
+ ) {
+ link(elementName.orEmpty(), elements.first().dri, kind = kind)
+ divergentGroup(
+ ContentDivergentGroup.GroupID(name),
+ elements.map { it.dri }.toSet(),
+ kind = kind,
+ extra = extra
) {
elements.map {
- instance(setOf(it.dri), it.sourceSets.toSet(), extra = PropertyContainer.withAll(SymbolAnchorHint)) {
+ instance(setOf(it.dri), it.sourceSets.toSet(), extra = PropertyContainer.withAll(SymbolAnchorHint(it.name ?: ""))) {
divergent {
group {
+buildSignature(it)
diff --git a/plugins/base/src/main/kotlin/translators/documentables/PageContentBuilder.kt b/plugins/base/src/main/kotlin/translators/documentables/PageContentBuilder.kt
index 4bebd9f1..2fc0c7b2 100644
--- a/plugins/base/src/main/kotlin/translators/documentables/PageContentBuilder.kt
+++ b/plugins/base/src/main/kotlin/translators/documentables/PageContentBuilder.kt
@@ -13,6 +13,7 @@ import org.jetbrains.dokka.model.properties.PropertyContainer
import org.jetbrains.dokka.model.toDisplaySourceSets
import org.jetbrains.dokka.pages.*
import org.jetbrains.dokka.utilities.DokkaLogger
+import org.jetbrains.dokka.model.properties.plus
@DslMarker
annotation class ContentBuilderMarker
@@ -114,7 +115,7 @@ open class PageContentBuilder(
sourceSets,
kind,
styles,
- extra + SimpleAttr("anchor", text.replace("\\s".toRegex(), "").toLowerCase())
+ extra + SymbolAnchorHint(text.replace("\\s".toRegex(), "").toLowerCase())
) {
text(text, kind = kind)
block()
@@ -184,7 +185,7 @@ open class PageContentBuilder(
else it
}
.map {
- val newExtra = if (needsAnchors) extra + SymbolAnchorHint else extra
+ val newExtra = if (needsAnchors) extra + SymbolAnchorHint.from(it) else extra
buildGroup(setOf(it.dri), it.sourceSets.toSet(), kind, styles, newExtra) {
operation(it)
}
@@ -236,7 +237,8 @@ open class PageContentBuilder(
listOf(createText(text, kind, sourceSets, styles, extra)),
address,
DCI(mainDRI, kind),
- sourceSets.toDisplaySourceSets()
+ sourceSets.toDisplaySourceSets(),
+ extra = extra
)
fun link(
@@ -269,7 +271,8 @@ open class PageContentBuilder(
contentFor(mainDRI, sourceSets, kind, styles, extra, block).children,
address,
DCI(mainDRI, kind),
- sourceSets.toDisplaySourceSets()
+ sourceSets.toDisplaySourceSets(),
+ extra = extra
)
}