diff options
| author | Marcin Aman <maman@virtuslab.com> | 2020-08-13 16:23:26 +0200 |
|---|---|---|
| committer | Kamil Doległo <9080183+kamildoleglo@users.noreply.github.com> | 2020-10-08 19:05:41 +0200 |
| commit | aae7623bb459d2bcd1e1b492aadf5c3858a3e657 (patch) | |
| tree | f404b8bb3caed3e394f7b54d7296836851cfb2ab /plugins/base/src/main/kotlin/translators | |
| parent | be3fea152ae5dcec5ba9a29d86a69010d6b2e428 (diff) | |
| download | dokka-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.kt | 41 | ||||
| -rw-r--r-- | plugins/base/src/main/kotlin/translators/documentables/PageContentBuilder.kt | 11 |
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 ) } |
