Skip to content

Commit

Permalink
Unite platforms bookmarks rows (#2219)
Browse files Browse the repository at this point in the history
  • Loading branch information
vmishenev committed Nov 12, 2021
1 parent d5f91fc commit 4a1b8a9
Show file tree
Hide file tree
Showing 5 changed files with 227 additions and 237 deletions.
3 changes: 2 additions & 1 deletion plugins/base/api/base.api
Original file line number Diff line number Diff line change
Expand Up @@ -1307,7 +1307,8 @@ public class org/jetbrains/dokka/base/translators/documentables/DefaultPageCreat
public fun <init> (Lorg/jetbrains/dokka/base/DokkaBaseConfiguration;Lorg/jetbrains/dokka/base/transformers/pages/comments/CommentsToContentConverter;Lorg/jetbrains/dokka/base/signatures/SignatureProvider;Lorg/jetbrains/dokka/utilities/DokkaLogger;)V
protected fun contentForBrief (Lorg/jetbrains/dokka/base/translators/documentables/PageContentBuilder$DocumentableContentBuilder;Lorg/jetbrains/dokka/model/Documentable;)V
protected fun contentForClasslike (Lorg/jetbrains/dokka/model/DClasslike;)Lorg/jetbrains/dokka/pages/ContentGroup;
protected fun contentForComments (Lorg/jetbrains/dokka/model/Documentable;)Ljava/util/List;
protected fun contentForComments (Lorg/jetbrains/dokka/model/Documentable;Z)Ljava/util/List;
public static synthetic fun contentForComments$default (Lorg/jetbrains/dokka/base/translators/documentables/DefaultPageCreator;Lorg/jetbrains/dokka/model/Documentable;ZILjava/lang/Object;)Ljava/util/List;
protected fun contentForDescription (Lorg/jetbrains/dokka/model/Documentable;)Ljava/util/List;
protected fun contentForEnumEntry (Lorg/jetbrains/dokka/model/DEnumEntry;)Lorg/jetbrains/dokka/pages/ContentGroup;
protected fun contentForFunction (Lorg/jetbrains/dokka/model/DFunction;)Lorg/jetbrains/dokka/pages/ContentGroup;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -369,22 +369,37 @@ open class DefaultPageCreator(
sourceSets.firstOrNull { it in this.keys }.let { this[it] }

protected open fun contentForComments(
d: Documentable
d: Documentable,
isPlatformHintedContent: Boolean = true
): List<ContentNode> {
val tags = d.groupedTags
val platforms = d.sourceSets

fun DocumentableContentBuilder.buildContent(
platforms: Set<DokkaSourceSet>,
contentBuilder: DocumentableContentBuilder.() -> Unit
) = if (isPlatformHintedContent)
sourceSetDependentHint(
sourceSets = platforms,
kind = ContentKind.SourceSetDependentHint,
block = contentBuilder
)
else
contentBuilder()

fun DocumentableContentBuilder.contentForParams() {
if (tags.isNotEmptyForTag<Param>() && d !is DProperty) {
header(2, "Parameters", kind = ContentKind.Parameters)
if (tags.isNotEmptyForTag<Param>()) {
val params = tags.withTypeNamed<Param>()
val availablePlatforms = params.values.flatMap { it.keys }.toSet()

header(2, "Parameters", kind = ContentKind.Parameters, sourceSets = availablePlatforms)
group(
extra = mainExtra + SimpleAttr.header("Parameters"),
styles = setOf(ContentStyle.WithExtraAttributes)
styles = setOf(ContentStyle.WithExtraAttributes),
sourceSets = availablePlatforms
) {
sourceSetDependentHint(sourceSets = platforms.toSet(), kind = ContentKind.SourceSetDependentHint) {
val params = tags.withTypeNamed<Param>()
table(kind = ContentKind.Parameters) {
platforms.forEach { platform ->
buildContent(availablePlatforms) {
table(kind = ContentKind.Parameters, sourceSets = availablePlatforms) {
availablePlatforms.forEach { platform ->
val possibleFallbacks = d.getPossibleFallbackSourcesets(platform)
params.mapNotNull { (_, param) ->
(param[platform] ?: param.fallback(possibleFallbacks))?.let {
Expand All @@ -407,22 +422,25 @@ open class DefaultPageCreator(

fun DocumentableContentBuilder.contentForSeeAlso() {
if (tags.isNotEmptyForTag<See>()) {
header(2, "See also", kind = ContentKind.Comment)
val seeAlsoTags = tags.withTypeNamed<See>()
val availablePlatforms = seeAlsoTags.values.flatMap { it.keys }.toSet()

header(2, "See also", kind = ContentKind.Comment, sourceSets = availablePlatforms)
group(
extra = mainExtra + SimpleAttr.header("See also"),
styles = setOf(ContentStyle.WithExtraAttributes)
styles = setOf(ContentStyle.WithExtraAttributes),
sourceSets = availablePlatforms
) {
sourceSetDependentHint(sourceSets = platforms.toSet(), kind = ContentKind.SourceSetDependentHint) {
val seeAlsoTags = tags.withTypeNamed<See>()
buildContent(availablePlatforms) {
table(kind = ContentKind.Sample) {
platforms.forEach { platform ->
availablePlatforms.forEach { platform ->
val possibleFallbacks = d.getPossibleFallbackSourcesets(platform)
seeAlsoTags.forEach { (_, see) ->
(see[platform] ?: see.fallback(possibleFallbacks))?.let {
row(
sourceSets = setOf(platform),
kind = ContentKind.Comment,
styles = this@sourceSetDependentHint.mainStyles,
styles = this@group.mainStyles,
) {
if (it.address != null) link(
it.name,
Expand All @@ -444,9 +462,11 @@ open class DefaultPageCreator(
fun DocumentableContentBuilder.contentForThrows() {
val throws = tags.withTypeNamed<Throws>()
if (throws.isNotEmpty()) {
header(2, "Throws")
sourceSetDependentHint(sourceSets = platforms.toSet(), kind = ContentKind.SourceSetDependentHint) {
platforms.forEach { sourceset ->
val availablePlatforms = throws.values.flatMap { it.keys }.toSet()

header(2, "Throws", sourceSets = availablePlatforms)
buildContent(availablePlatforms) {
availablePlatforms.forEach { sourceset ->
table(kind = ContentKind.Main, sourceSets = setOf(sourceset)) {
throws.entries.forEach { entry ->
entry.value[sourceset]?.let { throws ->
Expand All @@ -469,13 +489,15 @@ open class DefaultPageCreator(
fun DocumentableContentBuilder.contentForSamples() {
val samples = tags.withTypeNamed<Sample>()
if (samples.isNotEmpty()) {
header(2, "Samples", kind = ContentKind.Sample)
val availablePlatforms = samples.values.flatMap { it.keys }.toSet()
header(2, "Samples", kind = ContentKind.Sample, sourceSets = availablePlatforms)
group(
extra = mainExtra + SimpleAttr.header("Samples"),
styles = emptySet()
styles = emptySet(),
sourceSets = availablePlatforms
) {
sourceSetDependentHint(sourceSets = platforms.toSet(), kind = ContentKind.SourceSetDependentHint) {
platforms.map { platformData ->
buildContent(availablePlatforms) {
availablePlatforms.map { platformData ->
val content = samples.filter { it.value.isEmpty() || platformData in it.value }
group(
sourceSets = setOf(platformData),
Expand All @@ -496,7 +518,8 @@ open class DefaultPageCreator(
if (tags.isNotEmpty()) {
contentForSamples()
contentForSeeAlso()
contentForParams()
if (d !is DProperty)
contentForParams()
contentForThrows()
}
}.children
Expand Down Expand Up @@ -561,7 +584,7 @@ open class DefaultPageCreator(
}
after {
+contentForDescription(d)
+contentForComments(d)
+contentForComments(d, isPlatformHintedContent = false)
}
}
}
Expand Down
Loading

0 comments on commit 4a1b8a9

Please sign in to comment.