From def5b63ec4afa69d22f66bf1af76175fc1cdec3f Mon Sep 17 00:00:00 2001 From: Błażej Kardyś Date: Fri, 15 Nov 2019 03:37:27 +0100 Subject: Page generation changes --- core/src/main/kotlin/DokkaDescriptorVisitor.kt | 5 +- core/src/main/kotlin/DokkaGenerator.kt | 9 +- core/src/main/kotlin/Model/DocumentationNode.kt | 4 +- .../Model/transformers/DocumentationNodesMerger.kt | 2 +- core/src/main/kotlin/Utilities/nodeDebug.kt | 46 +++--- core/src/main/kotlin/pages/ContentNodes.kt | 10 +- .../kotlin/pages/MarkdownToContentConverter.kt | 118 +++++++++------ core/src/main/kotlin/pages/PageNodes.kt | 89 ++++++----- core/src/main/kotlin/renderers/DefaultRenderer.kt | 4 +- .../kotlin/resolvers/DefaultLocationProvider.kt | 2 +- .../DefaultDocumentationToPageTransformer.kt | 166 +++++++++++++-------- 11 files changed, 265 insertions(+), 190 deletions(-) (limited to 'core/src') diff --git a/core/src/main/kotlin/DokkaDescriptorVisitor.kt b/core/src/main/kotlin/DokkaDescriptorVisitor.kt index 63d3ea20..34b45f23 100644 --- a/core/src/main/kotlin/DokkaDescriptorVisitor.kt +++ b/core/src/main/kotlin/DokkaDescriptorVisitor.kt @@ -5,6 +5,7 @@ import org.jetbrains.dokka.Model.Function import org.jetbrains.dokka.links.Callable import org.jetbrains.dokka.links.DRI import org.jetbrains.dokka.links.withClass +import org.jetbrains.dokka.pages.PlatformData import org.jetbrains.kotlin.descriptors.* import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor.Kind.FAKE_OVERRIDE import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor.Kind.SYNTHESIZED @@ -17,7 +18,7 @@ import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter import org.jetbrains.kotlin.resolve.scopes.MemberScope class DokkaDescriptorVisitor( - val platform: List, + val platformData: PlatformData, private val resolutionFacade: DokkaResolutionFacade ) : DeclarationDescriptorVisitorEmptyBodies, DRI>() { override fun visitDeclarationDescriptor(descriptor: DeclarationDescriptor, parent: DRI): Nothing { @@ -138,6 +139,6 @@ class DokkaDescriptorVisitor( destination.split('.') ).map { Pair(destination, DRI.from(it)) } }?.toMap() ?: emptyMap() - return Descriptor(this, doc, links, platform) + return Descriptor(this, doc, links, listOf(platformData)) } } diff --git a/core/src/main/kotlin/DokkaGenerator.kt b/core/src/main/kotlin/DokkaGenerator.kt index f5e8b832..11f583b3 100644 --- a/core/src/main/kotlin/DokkaGenerator.kt +++ b/core/src/main/kotlin/DokkaGenerator.kt @@ -2,10 +2,11 @@ package org.jetbrains.dokka import org.jetbrains.dokka.Model.Module import org.jetbrains.dokka.Model.transformers.DocumentationNodesMerger -import org.jetbrains.dokka.Utilities.genericPretty +//import org.jetbrains.dokka.Utilities.genericPretty import org.jetbrains.dokka.Utilities.pretty import org.jetbrains.dokka.links.DRI import org.jetbrains.dokka.pages.MarkdownToContentConverter +import org.jetbrains.dokka.pages.PlatformData import org.jetbrains.dokka.renderers.FileWriter import org.jetbrains.dokka.renderers.HtmlRenderer import org.jetbrains.dokka.resolvers.DefaultLocationProvider @@ -43,7 +44,7 @@ class DokkaGenerator( .distinct() .mapNotNull { facade.resolveSession.getPackageFragment(it) } .map { - DokkaDescriptorVisitor(pass.targets, facade).visitPackageFragmentDescriptor( + DokkaDescriptorVisitor(PlatformData(pass.analysisPlatform, pass.targets), facade).visitPackageFragmentDescriptor( it, DRI.topLevel ) @@ -55,11 +56,11 @@ class DokkaGenerator( } }.let { val markdownConverter = MarkdownToContentConverter(logger) - it.forEach { it.genericPretty().also(::nierzigoj) } +// it.forEach { it.genericPretty().also(::nierzigoj) } DefaultDocumentationToPageTransformer(markdownConverter, logger).transform(DocumentationNodesMerger(it)) } .also { - it.genericPretty().also(::nierzigoj) +// it.genericPretty().also(::nierzigoj) HtmlRenderer( FileWriter(configuration.outputDir, ""), DefaultLocationProvider(it, configuration, ".${configuration.format}") diff --git a/core/src/main/kotlin/Model/DocumentationNode.kt b/core/src/main/kotlin/Model/DocumentationNode.kt index 7efe6818..fc81db6d 100644 --- a/core/src/main/kotlin/Model/DocumentationNode.kt +++ b/core/src/main/kotlin/Model/DocumentationNode.kt @@ -1,6 +1,7 @@ package org.jetbrains.dokka.Model import org.jetbrains.dokka.links.DRI +import org.jetbrains.dokka.pages.PlatformData import org.jetbrains.kotlin.descriptors.* import org.jetbrains.kotlin.kdoc.psi.impl.KDocTag @@ -66,7 +67,7 @@ class Descriptor( val descriptor: T, val docTag: KDocTag?, val links: Map, - val passes: List + val platformData: List ) : DeclarationDescriptor by descriptor { override fun equals(other: Any?): Boolean = @@ -83,6 +84,7 @@ abstract class DocumentationNode { open val expectDescriptor: Descriptor? = null open val actualDescriptors: List> = emptyList() val descriptors by lazy { listOfNotNull(expectDescriptor) + actualDescriptors } + val platformData by lazy { descriptors.flatMap { it.platformData }.toSet() } abstract val dri: DRI diff --git a/core/src/main/kotlin/Model/transformers/DocumentationNodesMerger.kt b/core/src/main/kotlin/Model/transformers/DocumentationNodesMerger.kt index c5a67513..2fb2f7c0 100644 --- a/core/src/main/kotlin/Model/transformers/DocumentationNodesMerger.kt +++ b/core/src/main/kotlin/Model/transformers/DocumentationNodesMerger.kt @@ -28,7 +28,7 @@ fun Descriptor.mergeWith(other: Descriptor?) = D descriptor, docTag, links, - (passes + (other?.passes ?: emptyList())).distinct() + (platformData + (other?.platformData ?: emptyList())).distinct() ) fun List>.merge() : List> = diff --git a/core/src/main/kotlin/Utilities/nodeDebug.kt b/core/src/main/kotlin/Utilities/nodeDebug.kt index 8e2a7079..37655b0b 100644 --- a/core/src/main/kotlin/Utilities/nodeDebug.kt +++ b/core/src/main/kotlin/Utilities/nodeDebug.kt @@ -21,31 +21,31 @@ fun DocumentationNode.pretty(prefix: String = "", .orEmpty() + if (children.isEmpty()) "\n" else "" } -fun Any.genericPretty(prefix: String = "", isLast: Boolean = true): String { - val nextPrefix = prefix + (if (isLast) ' ' else DOWN) + ' ' - - return prefix + (if (isLast) LAST else BRANCH) + this.stringify() + - allChildren().dropLast(1) - .map { it.genericPretty(nextPrefix, false) } - .plus(allChildren().lastOrNull()?.genericPretty(nextPrefix)) - .filterNotNull() - .takeIf { it.isNotEmpty() } - ?.joinToString(prefix = "\n", separator = "") - .orEmpty() + if (allChildren().isEmpty()) "\n" else "" -} +//fun Any.genericPretty(prefix: String = "", isLast: Boolean = true): String { +// val nextPrefix = prefix + (if (isLast) ' ' else DOWN) + ' ' +// +// return prefix + (if (isLast) LAST else BRANCH) + this.stringify() + +// allChildren().dropLast(1) +// .map { it.genericPretty(nextPrefix, false) } +// .plus(allChildren().lastOrNull()?.genericPretty(nextPrefix)) +// .filterNotNull() +// .takeIf { it.isNotEmpty() } +// ?.joinToString(prefix = "\n", separator = "") +// .orEmpty() + if (allChildren().isEmpty()) "\n" else "" +//} private fun Any.stringify() = when(this) { is ContentNode -> toString() + this.dci is PageNode -> this.name + this::class.simpleName else -> toString() } -private fun Any.allChildren() = when(this){ - is PageNode -> children + content - is ContentBlock -> this.children - is ContentHeader -> this.items - is ContentStyle -> this.items - is ContentSymbol -> this.parts - is ContentComment -> this.parts - is ContentGroup -> this.children - is ContentList -> this.items - else -> emptyList() -} +//private fun Any.allChildren() = when(this){ +// is PageNode -> children + content +// is ContentBlock -> this.children +// is ContentHeader -> this.items +// is ContentStyle -> this.items +// is ContentSymbol -> this.parts +// is ContentComment -> this.parts +// is ContentGroup -> this.children +// is ContentList -> this.items +// else -> emptyList() +//} diff --git a/core/src/main/kotlin/pages/ContentNodes.kt b/core/src/main/kotlin/pages/ContentNodes.kt index a94a42c5..40b5e114 100644 --- a/core/src/main/kotlin/pages/ContentNodes.kt +++ b/core/src/main/kotlin/pages/ContentNodes.kt @@ -29,8 +29,10 @@ data class ContentHeader( override val dci: DCI, override val platforms: Set, override val style: Set