From 72069ee58cf17e41183e9fbc8f278acc4e9a1699 Mon Sep 17 00:00:00 2001 From: Paweł Marks Date: Tue, 23 Jun 2020 12:40:39 +0200 Subject: Render extensions --- .../documentables/DefaultPageCreator.kt | 53 ++++++++++++---------- .../documentables/PageContentBuilder.kt | 2 +- 2 files changed, 30 insertions(+), 25 deletions(-) diff --git a/plugins/base/src/main/kotlin/translators/documentables/DefaultPageCreator.kt b/plugins/base/src/main/kotlin/translators/documentables/DefaultPageCreator.kt index 21a91f2c..ab3fb70c 100644 --- a/plugins/base/src/main/kotlin/translators/documentables/DefaultPageCreator.kt +++ b/plugins/base/src/main/kotlin/translators/documentables/DefaultPageCreator.kt @@ -14,6 +14,7 @@ import org.jetbrains.dokka.model.properties.WithExtraProperties import org.jetbrains.dokka.pages.* import org.jetbrains.dokka.utilities.DokkaLogger import org.jetbrains.kotlin.utils.addToStdlib.safeAs +import javax.print.Doc import kotlin.reflect.KClass import kotlin.reflect.full.isSubclassOf import org.jetbrains.dokka.DokkaConfiguration.DokkaSourceSet @@ -23,7 +24,6 @@ private typealias GroupedTags = Map, List> = setOf(Property::class, Description::class, Constructor::class, Receiver::class, Param::class, See::class) - open class DefaultPageCreator( commentsToContentConverter: CommentsToContentConverter, signatureProvider: SignatureProvider, @@ -182,9 +182,10 @@ open class DefaultPageCreator( } protected open fun contentForClasslike(c: DClasslike) = contentBuilder.contentFor(c) { + val sourceSets = c.sourceSets.toSet() group(kind = ContentKind.Cover) { cover(c.name.orEmpty()) - sourceSetDependentHint(c.dri, c.sourceSets.toSet()) { + sourceSetDependentHint(c.dri, sourceSets) { +contentForDescription(c) +buildSignature(c) } @@ -198,7 +199,7 @@ open class DefaultPageCreator( 2, ContentKind.Constructors, c.constructors.filter { it.extra[PrimaryConstructorExtra] == null }, - c.sourceSets.toSet(), + sourceSets, extra = PropertyContainer.empty() + SimpleAttr.header("Constructors") ) { link(it.name, it.dri, kind = ContentKind.Main) @@ -234,8 +235,11 @@ open class DefaultPageCreator( +contentForScope(c, c.dri, c.sourceSets) @Suppress("UNCHECKED_CAST") - val extensions = (c as WithExtraProperties).extra[CallableExtensions]?.extensions?.filterIsInstance() - divergentBlock("Extensions", extensions.orEmpty(), ContentKind.Extensions, mainExtra + SimpleAttr.header("Extensions")) + val extensions = (c as WithExtraProperties) + .extra[CallableExtensions]?.extensions + ?.filterIsInstance() + + divergentBlock("Extensions", extensions.orEmpty(), ContentKind.Extensions, extra = mainExtra + SimpleAttr.header("Extensions")) } } @@ -474,40 +478,41 @@ open class DefaultPageCreator( ) { if (collection.any()) { header(2, name) - table(kind, extra = extra) { + table(kind, extra = extra, styles = emptySet()) { collection .groupBy { it.name } // This hacks displaying actual typealias signatures along classlike ones .mapValues { if (it.value.any { it is DClasslike }) it.value.filter { it !is DTypeAlias } else it.value } .toSortedMap(compareBy(nullsLast(String.CASE_INSENSITIVE_ORDER)){it}) .map { (elementName, elements) -> // This groupBy should probably use LocationProvider - buildGroup( + buildGroup( + 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(), - elements.flatMap { it.sourceSets }.toSet(), kind = kind ) { - link(elementName.orEmpty(), elements.first().dri, kind = kind) - divergentGroup( - ContentDivergentGroup.GroupID(name), - elements.map { it.dri }.toSet(), - kind = kind - ) { - elements.map { - instance(setOf(it.dri), it.sourceSets.toSet()) { - before { - contentForBrief(it) - contentForSinceKotlin(it) - } - divergent { - group { - +buildSignature(it) - } + elements.map { + instance(setOf(it.dri), it.sourceSets.toSet()) { + before { + contentForBrief(it) + contentForSinceKotlin(it) + } + 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 a58ef114..76e92268 100644 --- a/plugins/base/src/main/kotlin/translators/documentables/PageContentBuilder.kt +++ b/plugins/base/src/main/kotlin/translators/documentables/PageContentBuilder.kt @@ -467,7 +467,7 @@ open class PageContentBuilder( ) = ContentDivergentInstance( before, - divergent!!, + divergent ?: throw IllegalStateException("Divergent block needs divergent part"), after, DCI(mainDRI, kind), sourceSets, -- cgit