From 02f30b142aa467d3a24cc52a1fe3f2fed7ea1e33 Mon Sep 17 00:00:00 2001 From: Ignat Beresnev Date: Thu, 31 Aug 2023 20:16:01 +0200 Subject: Enable explicit API mode (#3139) --- plugins/all-modules-page/api/all-modules-page.api | 4 +- .../src/main/kotlin/AllModulesPageGeneration.kt | 27 ++- .../src/main/kotlin/AllModulesPagePlugin.kt | 30 +-- .../src/main/kotlin/ExternalModuleLinkResolver.kt | 10 +- .../src/main/kotlin/MultimoduleLocationProvider.kt | 37 ++- .../src/main/kotlin/MultimodulePageCreator.kt | 11 +- .../src/main/kotlin/ResolveLinkCommandHandler.kt | 2 +- .../src/main/kotlin/AndroidDocumentationPlugin.kt | 7 +- .../transformers/HideTagDocumentableFilter.kt | 2 +- plugins/base/api/base.api | 15 +- .../src/main/kotlin/renderers/JsoupUtils.kt | 41 ++-- .../main/kotlin/renderers/RenderingOnlyTestBase.kt | 6 +- .../src/main/kotlin/renderers/SignatureUtils.kt | 14 +- .../src/main/kotlin/renderers/TestPage.kt | 4 +- .../src/main/kotlin/testRunner/baseTestApi.kt | 102 ++++---- .../src/main/kotlin/utils/TestOutputWriter.kt | 18 +- .../utils/assertHtmlEqualsIgnoringWhitespace.kt | 2 +- plugins/base/src/main/kotlin/DokkaBase.kt | 150 ++++++------ .../base/src/main/kotlin/DokkaBaseConfiguration.kt | 16 +- .../deprecated/AnalysisApiDeprecatedError.kt | 2 +- .../deprecated/KotlinAnalysisDeprecatedApi.kt | 28 +-- .../main/kotlin/deprecated/ParsersDeprecatedAPI.kt | 14 +- .../deprecated/ParsersFactoriesDeprecatedAPI.kt | 4 +- .../TranslatorDescriptorsDeprecatedAPI.kt | 12 +- .../deprecated/TranslatorPsiDeprecatedAPI.kt | 2 +- .../kotlin/generation/SingleModuleGeneration.kt | 28 ++- .../src/main/kotlin/renderers/DefaultRenderer.kt | 79 ++++--- .../base/src/main/kotlin/renderers/FileWriter.kt | 7 +- .../base/src/main/kotlin/renderers/OutputWriter.kt | 6 +- .../main/kotlin/renderers/PackageListService.kt | 23 +- .../main/kotlin/renderers/TabSortingStrategy.kt | 4 +- .../main/kotlin/renderers/contentTypeChecking.kt | 11 +- .../src/main/kotlin/renderers/html/HtmlRenderer.kt | 103 ++++---- .../renderers/html/NavigationDataProvider.kt | 6 +- .../main/kotlin/renderers/html/NavigationPage.kt | 24 +- .../renderers/html/SearchbarDataInstaller.kt | 25 +- .../base/src/main/kotlin/renderers/html/Tags.kt | 34 +-- .../consumers/ImmediateResolutionTagConsumer.kt | 10 +- .../html/command/consumers/PathToRootConsumer.kt | 4 +- .../command/consumers/ReplaceVersionsConsumer.kt | 4 +- .../html/command/consumers/ResolveLinkConsumer.kt | 4 +- .../kotlin/renderers/html/htmlFormatingUtils.kt | 7 +- .../kotlin/renderers/html/htmlPreprocessors.kt | 20 +- .../innerTemplating/DefaultTemplateModelFactory.kt | 6 +- .../innerTemplating/DefaultTemplateModelMerger.kt | 2 +- .../html/innerTemplating/HtmlTemplater.kt | 12 +- .../html/innerTemplating/TemplateModelFactory.kt | 6 +- .../html/innerTemplating/TemplateModelMerger.kt | 4 +- .../src/main/kotlin/renderers/preprocessors.kt | 16 +- .../main/kotlin/resolvers/anchors/AnchorsHint.kt | 6 +- .../external/DefaultExternalLocationProvider.kt | 10 +- .../DefaultExternalLocationProviderFactory.kt | 31 ++- .../external/Dokka010ExternalLocationProvider.kt | 10 +- .../resolvers/external/ExternalLocationProvider.kt | 4 +- .../external/ExternalLocationProviderFactory.kt | 4 +- .../ExternalLocationProviderFactoryWithCache.kt | 5 +- .../javadoc/AndroidExternalLocationProvider.kt | 4 +- .../javadoc/JavadocExternalLocationProvider.kt | 17 +- .../JavadocExternalLocationProviderFactory.kt | 44 ++-- .../resolvers/local/DefaultLocationProvider.kt | 5 +- .../resolvers/local/DokkaBaseLocationProvider.kt | 4 +- .../resolvers/local/DokkaLocationProvider.kt | 14 +- .../local/DokkaLocationProviderFactory.kt | 10 +- .../kotlin/resolvers/local/LocationProvider.kt | 29 ++- .../resolvers/local/LocationProviderFactory.kt | 4 +- .../resolvers/shared/ExternalDocumentation.kt | 2 +- .../src/main/kotlin/resolvers/shared/LinkFormat.kt | 6 +- .../main/kotlin/resolvers/shared/PackageList.kt | 20 +- .../resolvers/shared/RecognizedLinkFormat.kt | 14 +- .../main/kotlin/signatures/JvmSignatureUtils.kt | 53 +++-- .../kotlin/signatures/KotlinSignatureProvider.kt | 9 +- .../main/kotlin/signatures/KotlinSignatureUtils.kt | 20 +- .../main/kotlin/signatures/SignatureProvider.kt | 4 +- .../kotlin/templating/AddToNavigationCommand.kt | 4 +- .../base/src/main/kotlin/templating/AddToSearch.kt | 5 +- .../templating/AddToSourcesetDependencies.kt | 5 +- plugins/base/src/main/kotlin/templating/Command.kt | 6 +- .../templating/ImmediateHtmlCommandConsumer.kt | 8 +- .../main/kotlin/templating/InsertTemplateExtra.kt | 4 +- .../templating/PathToRootSubstitutionCommand.kt | 5 +- .../templating/ProjectNameSubstitutionCommand.kt | 5 +- .../kotlin/templating/ReplaceVersionsCommand.kt | 2 +- .../main/kotlin/templating/ResolveLinkCommand.kt | 4 +- .../main/kotlin/templating/jsonMapperForPlugins.kt | 4 +- .../documentables/ActualTypealiasAdder.kt | 10 +- .../documentables/DefaultDocumentableMerger.kt | 4 +- .../DeprecatedDocumentableFilterTransformer.kt | 5 +- .../DocumentableReplacerTransformer.kt | 23 +- .../DocumentableVisibilityFilterTransformer.kt | 14 +- .../documentables/EmptyModulesFilterTransformer.kt | 2 +- .../EmptyPackagesFilterTransformer.kt | 4 +- .../documentables/ExtensionExtractorTransformer.kt | 11 +- ...nheritedEntriesDocumentableFilterTransformer.kt | 5 +- .../InheritorsExtractorTransformer.kt | 8 +- .../KotlinArrayDocumentableReplacerTransformer.kt | 5 +- ...bviousFunctionsDocumentableFilterTransformer.kt | 4 +- .../documentables/SuppressTagDocumentableFilter.kt | 5 +- ...ssedByConditionDocumentableFilterTransformer.kt | 7 +- ...ByConfigurationDocumentableFilterTransformer.kt | 4 +- .../kotlin/transformers/documentables/utils.kt | 11 +- .../pages/annotations/SinceKotlinTransformer.kt | 8 +- .../pages/comments/CommentsToContentConverter.kt | 4 +- .../pages/comments/DocTagToContentConverter.kt | 2 +- .../pages/merger/FallbackPageMergerStrategy.kt | 4 +- .../kotlin/transformers/pages/merger/PageMerger.kt | 2 +- .../pages/merger/PageMergerStrategy.kt | 4 +- .../merger/SameMethodNamePageMergerStrategy.kt | 4 +- .../merger/SourceSetMergingPageTransformer.kt | 2 +- .../pages/sourcelinks/SourceLinksTransformer.kt | 16 +- .../pages/tags/CustomTagContentProvider.kt | 8 +- .../pages/tags/SinceKotlinTagContentProvider.kt | 4 +- .../DefaultDocumentableToPageTranslator.kt | 2 +- .../documentables/DefaultPageCreator.kt | 253 ++++++++++---------- .../translators/documentables/DriClashAwareName.kt | 4 +- .../documentables/PageContentBuilder.kt | 261 ++++++++++++--------- .../documentables/briefFromContentNodes.kt | 4 +- .../translators/psi/parsers/InheritDocResolver.kt | 4 - .../translators/psi/parsers/JavadocParser.kt | 4 - .../kotlin/translators/psi/parsers/JavadocTag.kt | 4 - plugins/gfm/api/gfm.api | 3 +- .../GfmTemplateProcessingPlugin.kt | 13 +- .../GfmTemplateProcessingStrategy.kt | 4 +- .../kotlin/org/jetbrains/dokka/gfm/GfmPlugin.kt | 20 +- .../org/jetbrains/dokka/gfm/gfmTemplating.kt | 21 +- .../dokka/gfm/location/MarkdownLocationProvider.kt | 7 +- .../dokka/gfm/renderer/BriefCommentPreprocessor.kt | 20 +- .../dokka/gfm/renderer/CommonmarkRenderer.kt | 5 +- plugins/javadoc/api/javadoc.api | 5 +- .../javadoc/JavadocDocumentableToPageTranslator.kt | 2 +- .../jetbrains/dokka/javadoc/JavadocPageCreator.kt | 19 +- .../org/jetbrains/dokka/javadoc/JavadocPlugin.kt | 47 ++-- .../javadoc/location/JavadocLocationProvider.kt | 16 +- .../location/JavadocLocationProviderFactory.kt | 7 +- .../dokka/javadoc/pages/JavadocContentNodes.kt | 81 ++++--- .../dokka/javadoc/pages/JavadocIndexExtra.kt | 4 +- .../dokka/javadoc/pages/JavadocPageNodes.kt | 108 +++++---- .../dokka/javadoc/pages/htmlPreprocessors.kt | 17 +- .../renderer/JavadocContentToHtmlTranslator.kt | 2 +- .../dokka/javadoc/renderer/KorteJavadocRenderer.kt | 19 +- .../dokka/javadoc/renderer/SearchScriptsCreator.kt | 6 +- .../javadoc/signatures/JavadocSignatureProvider.kt | 10 +- .../JavadocDocumentableJVMSourceSetFilter.kt | 4 +- .../documentables/JavadocPageContentBuilder.kt | 24 +- .../validity/MultiplatformConfiguredChecker.kt | 8 +- .../JekyllTemplateProcessingPlugin.kt | 8 +- plugins/jekyll/src/main/kotlin/JekyllPlugin.kt | 20 +- .../src/main/kotlin/KotlinAsJavaPlugin.kt | 14 +- .../kotlin/converters/KotlinToJavaConverter.kt | 4 +- .../kotlin/signatures/JavaSignatureProvider.kt | 10 +- .../main/kotlin/signatures/JavaSignatureUtils.kt | 14 +- .../src/main/kotlin/transformToJava.kt | 8 +- .../transformers/JvmNameDocumentableTransformer.kt | 2 +- .../main/kotlin/transformers/JvmNameProvider.kt | 14 +- .../KotlinAsJavaDocumentableTransformer.kt | 2 +- .../KotlinAsJavaDocumentableToPageTranslator.kt | 4 +- .../kotlin/translators/KotlinAsJavaPageCreator.kt | 2 +- plugins/mathjax/src/main/kotlin/MathjaxPlugin.kt | 18 +- .../templates/AddToNavigationCommandHandler.kt | 6 +- .../src/main/kotlin/templates/CommandHandler.kt | 14 +- .../templates/DirectiveBasedTemplateProcessing.kt | 6 +- .../FallbackTemplateProcessingStrategy.kt | 2 +- .../JsonElementBasedTemplateProcessingStrategy.kt | 15 +- .../templates/PackageListProcessingStrategy.kt | 4 +- .../main/kotlin/templates/PathToRootSubstitutor.kt | 4 +- .../kotlin/templates/ProjectNameSubstitutor.kt | 4 +- .../templates/ReplaceVersionCommandHandler.kt | 4 +- .../SourcesetDependencyProcessingStrategy.kt | 4 +- .../kotlin/templates/SubstitutionCommandHandler.kt | 2 +- .../src/main/kotlin/templates/Substitutor.kt | 4 +- .../src/main/kotlin/templates/TemplateProcessor.kt | 35 +-- .../src/main/kotlin/templates/TemplatingPlugin.kt | 41 ++-- plugins/versioning/api/versioning.api | 2 +- .../DefaultPreviousDocumentationCopyPostAction.kt | 4 +- .../versioning/ReplaceVersionCommandConsumer.kt | 4 +- .../dokka/versioning/ReplaceVersionsCommand.kt | 4 +- .../dokka/versioning/VersioningConfiguration.kt | 18 +- .../jetbrains/dokka/versioning/VersioningPlugin.kt | 40 ++-- .../dokka/versioning/VersioningStorage.kt | 19 +- .../dokka/versioning/VersionsNavigationCreator.kt | 8 +- .../jetbrains/dokka/versioning/VersionsOrdering.kt | 10 +- .../dokka/versioning/htmlPreprocessors.kt | 8 +- 181 files changed, 1664 insertions(+), 1292 deletions(-) delete mode 100644 plugins/base/src/main/kotlin/translators/psi/parsers/InheritDocResolver.kt delete mode 100644 plugins/base/src/main/kotlin/translators/psi/parsers/JavadocParser.kt delete mode 100644 plugins/base/src/main/kotlin/translators/psi/parsers/JavadocTag.kt (limited to 'plugins') diff --git a/plugins/all-modules-page/api/all-modules-page.api b/plugins/all-modules-page/api/all-modules-page.api index 0763d75a..3e6dc898 100644 --- a/plugins/all-modules-page/api/all-modules-page.api +++ b/plugins/all-modules-page/api/all-modules-page.api @@ -30,7 +30,6 @@ public final class org/jetbrains/dokka/allModulesPage/AllModulesPagePlugin : org public final fun getAllModulesPageGeneration ()Lorg/jetbrains/dokka/plugability/Extension; public final fun getAllModulesPageTransformer ()Lorg/jetbrains/dokka/plugability/ExtensionPoint; public final fun getBaseLocationProviderFactory ()Lorg/jetbrains/dokka/plugability/Extension; - public final fun getDokkaBase ()Lorg/jetbrains/dokka/base/DokkaBase; public final fun getExternalModuleLinkResolver ()Lorg/jetbrains/dokka/plugability/ExtensionPoint; public final fun getMultiModuleLinkResolver ()Lorg/jetbrains/dokka/plugability/Extension; public final fun getMultimoduleLocationProvider ()Lorg/jetbrains/dokka/plugability/Extension; @@ -62,8 +61,7 @@ public class org/jetbrains/dokka/allModulesPage/MultimoduleLocationProvider : or public final class org/jetbrains/dokka/allModulesPage/MultimoduleLocationProvider$Factory : org/jetbrains/dokka/base/resolvers/local/LocationProviderFactory { public fun (Lorg/jetbrains/dokka/plugability/DokkaContext;)V - public fun getLocationProvider (Lorg/jetbrains/dokka/pages/RootPageNode;)Lorg/jetbrains/dokka/allModulesPage/MultimoduleLocationProvider; - public synthetic fun getLocationProvider (Lorg/jetbrains/dokka/pages/RootPageNode;)Lorg/jetbrains/dokka/base/resolvers/local/LocationProvider; + public fun getLocationProvider (Lorg/jetbrains/dokka/pages/RootPageNode;)Lorg/jetbrains/dokka/base/resolvers/local/LocationProvider; } public final class org/jetbrains/dokka/allModulesPage/MultimodulePageCreator : org/jetbrains/dokka/transformers/pages/PageCreator { diff --git a/plugins/all-modules-page/src/main/kotlin/AllModulesPageGeneration.kt b/plugins/all-modules-page/src/main/kotlin/AllModulesPageGeneration.kt index ea009c9e..11d2d32c 100644 --- a/plugins/all-modules-page/src/main/kotlin/AllModulesPageGeneration.kt +++ b/plugins/all-modules-page/src/main/kotlin/AllModulesPageGeneration.kt @@ -16,7 +16,7 @@ import org.jetbrains.dokka.templates.TemplatingPlugin import org.jetbrains.dokka.templates.TemplatingResult import org.jetbrains.dokka.transformers.pages.CreationContext -class AllModulesPageGeneration(private val context: DokkaContext) : Generation { +public class AllModulesPageGeneration(private val context: DokkaContext) : Generation { private val allModulesPagePlugin by lazy { context.plugin() } private val templatingPlugin by lazy { context.plugin() } @@ -44,34 +44,37 @@ class AllModulesPageGeneration(private val context: DokkaContext) : Generation { runPostActions() } - override val generationName = "index page for project" + override val generationName: String = "index page for project" - fun createAllModulesPage(allModulesContext: DefaultAllModulesContext) = + public fun createAllModulesPage(allModulesContext: DefaultAllModulesContext): RootPageNode = allModulesPagePlugin.querySingle { allModulesPageCreator }.invoke(allModulesContext) - fun transformAllModulesPage(pages: RootPageNode) = + public fun transformAllModulesPage(pages: RootPageNode): RootPageNode = allModulesPagePlugin.query { allModulesPageTransformer }.fold(pages) { acc, t -> t(acc) } - fun render(transformedPages: RootPageNode) { + public fun render(transformedPages: RootPageNode) { context.single(CoreExtensions.renderer).render(transformedPages) } - fun runPostActions() { + public fun runPostActions() { context[CoreExtensions.postActions].forEach { it() } } - fun processSubmodules() = - templatingPlugin.querySingle { submoduleTemplateProcessor } + public fun processSubmodules(): DefaultAllModulesContext { + return templatingPlugin.querySingle { submoduleTemplateProcessor } .process(context.configuration.modules) .let { DefaultAllModulesContext(it) } + } - fun processMultiModule(root: RootPageNode) = + public fun processMultiModule(root: RootPageNode) { templatingPlugin.querySingle { multimoduleTemplateProcessor }.process(root) + } - fun finishProcessingSubmodules() = + public fun finishProcessingSubmodules() { templatingPlugin.query { templateProcessingStrategy }.forEach { it.finish(context.configuration.outputDir) } + } - data class DefaultAllModulesContext(val nonEmptyModules: List) : CreationContext { - constructor(templating: TemplatingResult) : this(templating.modules) + public data class DefaultAllModulesContext(val nonEmptyModules: List) : CreationContext { + public constructor(templating: TemplatingResult) : this(templating.modules) } } diff --git a/plugins/all-modules-page/src/main/kotlin/AllModulesPagePlugin.kt b/plugins/all-modules-page/src/main/kotlin/AllModulesPagePlugin.kt index dec818ba..06202082 100644 --- a/plugins/all-modules-page/src/main/kotlin/AllModulesPagePlugin.kt +++ b/plugins/all-modules-page/src/main/kotlin/AllModulesPagePlugin.kt @@ -8,47 +8,47 @@ import org.jetbrains.dokka.CoreExtensions import org.jetbrains.dokka.base.DokkaBase import org.jetbrains.dokka.base.resolvers.local.DokkaLocationProviderFactory import org.jetbrains.dokka.base.resolvers.local.LocationProviderFactory -import org.jetbrains.dokka.plugability.DokkaPlugin -import org.jetbrains.dokka.plugability.DokkaPluginApiPreview -import org.jetbrains.dokka.plugability.PluginApiPreviewAcknowledgement +import org.jetbrains.dokka.generation.Generation +import org.jetbrains.dokka.plugability.* +import org.jetbrains.dokka.templates.CommandHandler import org.jetbrains.dokka.templates.TemplatingPlugin import org.jetbrains.dokka.transformers.pages.PageCreator import org.jetbrains.dokka.transformers.pages.PageTransformer -class AllModulesPagePlugin : DokkaPlugin() { +public class AllModulesPagePlugin : DokkaPlugin() { - val partialLocationProviderFactory by extensionPoint() - val allModulesPageCreator by extensionPoint>() - val allModulesPageTransformer by extensionPoint() - val externalModuleLinkResolver by extensionPoint() + public val partialLocationProviderFactory: ExtensionPoint by extensionPoint() + public val allModulesPageCreator: ExtensionPoint> by extensionPoint() + public val allModulesPageTransformer: ExtensionPoint by extensionPoint() + public val externalModuleLinkResolver: ExtensionPoint by extensionPoint() - val allModulesPageCreators by extending { + public val allModulesPageCreators: Extension, *, *> by extending { allModulesPageCreator providing ::MultimodulePageCreator } - val dokkaBase by lazy { plugin() } + private val dokkaBase: DokkaBase by lazy { plugin() } - val multimoduleLocationProvider by extending { + public val multimoduleLocationProvider: Extension by extending { (dokkaBase.locationProviderFactory providing MultimoduleLocationProvider::Factory override plugin().locationProvider) } - val baseLocationProviderFactory by extending { + public val baseLocationProviderFactory: Extension by extending { partialLocationProviderFactory providing ::DokkaLocationProviderFactory } - val allModulesPageGeneration by extending { + public val allModulesPageGeneration: Extension by extending { (CoreExtensions.generation providing ::AllModulesPageGeneration override dokkaBase.singleGeneration) } - val resolveLinkCommandHandler by extending { + public val resolveLinkCommandHandler: Extension by extending { plugin().directiveBasedCommandHandlers providing ::ResolveLinkCommandHandler } - val multiModuleLinkResolver by extending { + public val multiModuleLinkResolver: Extension by extending { externalModuleLinkResolver providing ::DefaultExternalModuleLinkResolver } diff --git a/plugins/all-modules-page/src/main/kotlin/ExternalModuleLinkResolver.kt b/plugins/all-modules-page/src/main/kotlin/ExternalModuleLinkResolver.kt index f7b7cac4..da747bda 100644 --- a/plugins/all-modules-page/src/main/kotlin/ExternalModuleLinkResolver.kt +++ b/plugins/all-modules-page/src/main/kotlin/ExternalModuleLinkResolver.kt @@ -16,12 +16,14 @@ import org.jetbrains.dokka.plugability.query import java.io.File import java.net.URL -interface ExternalModuleLinkResolver { - fun resolve(dri: DRI, fileContext: File): String? - fun resolveLinkToModuleIndex(moduleName: String): String? +public interface ExternalModuleLinkResolver { + public fun resolve(dri: DRI, fileContext: File): String? + public fun resolveLinkToModuleIndex(moduleName: String): String? } -class DefaultExternalModuleLinkResolver(val context: DokkaContext) : ExternalModuleLinkResolver { +public class DefaultExternalModuleLinkResolver( + public val context: DokkaContext +) : ExternalModuleLinkResolver { private val elpFactory = context.plugin().query { externalLocationProviderFactory } private val externalDocumentations by lazy(::setupExternalDocumentations) private val elps by lazy { diff --git a/plugins/all-modules-page/src/main/kotlin/MultimoduleLocationProvider.kt b/plugins/all-modules-page/src/main/kotlin/MultimoduleLocationProvider.kt index cfd0d675..b0fa13d0 100644 --- a/plugins/all-modules-page/src/main/kotlin/MultimoduleLocationProvider.kt +++ b/plugins/all-modules-page/src/main/kotlin/MultimoduleLocationProvider.kt @@ -6,6 +6,7 @@ package org.jetbrains.dokka.allModulesPage import org.jetbrains.dokka.allModulesPage.MultimodulePageCreator.Companion.MULTIMODULE_PACKAGE_PLACEHOLDER import org.jetbrains.dokka.base.resolvers.local.DokkaBaseLocationProvider +import org.jetbrains.dokka.base.resolvers.local.LocationProvider import org.jetbrains.dokka.base.resolvers.local.LocationProviderFactory import org.jetbrains.dokka.links.DRI import org.jetbrains.dokka.model.DisplaySourceSet @@ -16,9 +17,10 @@ import org.jetbrains.dokka.plugability.DokkaContext import org.jetbrains.dokka.plugability.plugin import org.jetbrains.dokka.plugability.querySingle -open class MultimoduleLocationProvider(private val root: RootPageNode, dokkaContext: DokkaContext, - val extension: String = ".html") : - DokkaBaseLocationProvider(root, dokkaContext) { +public open class MultimoduleLocationProvider( + private val root: RootPageNode, dokkaContext: DokkaContext, + public val extension: String = ".html" +) : DokkaBaseLocationProvider(root, dokkaContext) { private val defaultLocationProvider = dokkaContext.plugin().querySingle { partialLocationProviderFactory } @@ -26,21 +28,32 @@ open class MultimoduleLocationProvider(private val root: RootPageNode, dokkaCont private val externalModuleLinkResolver = dokkaContext.plugin().querySingle { externalModuleLinkResolver } - override fun resolve(dri: DRI, sourceSets: Set, context: PageNode?) = - if (dri == MultimodulePageCreator.MULTIMODULE_ROOT_DRI) pathToRoot(root) + "index" - else dri.takeIf { it.packageName == MULTIMODULE_PACKAGE_PLACEHOLDER }?.classNames - ?.let(externalModuleLinkResolver::resolveLinkToModuleIndex) + override fun resolve(dri: DRI, sourceSets: Set, context: PageNode?): String? { + return if (dri == MultimodulePageCreator.MULTIMODULE_ROOT_DRI) { + pathToRoot(root) + "index" + } else { + dri.takeIf { it.packageName == MULTIMODULE_PACKAGE_PLACEHOLDER } + ?.classNames + ?.let(externalModuleLinkResolver::resolveLinkToModuleIndex) + } + } - override fun resolve(node: PageNode, context: PageNode?, skipExtension: Boolean) = - if (node is ContentPage && MultimodulePageCreator.MULTIMODULE_ROOT_DRI in node.dri) pathToRoot(root) + "index" + if (!skipExtension) extension else "" - else defaultLocationProvider.resolve(node, context, skipExtension) + override fun resolve(node: PageNode, context: PageNode?, skipExtension: Boolean): String? { + return if (node is ContentPage && MultimodulePageCreator.MULTIMODULE_ROOT_DRI in node.dri) { + pathToRoot(root) + "index" + if (!skipExtension) extension else "" + } else { + defaultLocationProvider.resolve(node, context, skipExtension) + } + } override fun pathToRoot(from: PageNode): String = defaultLocationProvider.pathToRoot(from) override fun ancestors(node: PageNode): List = listOf(root) - class Factory(private val context: DokkaContext) : LocationProviderFactory { - override fun getLocationProvider(pageNode: RootPageNode) = + public class Factory( + private val context: DokkaContext + ) : LocationProviderFactory { + override fun getLocationProvider(pageNode: RootPageNode): LocationProvider = MultimoduleLocationProvider(pageNode, context) } } diff --git a/plugins/all-modules-page/src/main/kotlin/MultimodulePageCreator.kt b/plugins/all-modules-page/src/main/kotlin/MultimodulePageCreator.kt index 6fbec587..7b832d21 100644 --- a/plugins/all-modules-page/src/main/kotlin/MultimodulePageCreator.kt +++ b/plugins/all-modules-page/src/main/kotlin/MultimodulePageCreator.kt @@ -25,11 +25,9 @@ import org.jetbrains.dokka.utilities.DokkaLogger import org.jetbrains.dokka.analysis.kotlin.internal.InternalKotlinAnalysisPlugin import java.io.File -class MultimodulePageCreator( +public class MultimodulePageCreator( private val context: DokkaContext, ) : PageCreator { - private val logger: DokkaLogger = context.logger - private val commentsConverter by lazy { context.plugin().querySingle { commentsToContentConverter } } private val signatureProvider by lazy { context.plugin().querySingle { signatureProvider } } private val moduleDocumentationReader by lazy { context.plugin().querySingle { moduleAndPackageDocumentationReader } } @@ -109,8 +107,9 @@ class MultimodulePageCreator( else firstChildParagraph } - companion object { - const val MULTIMODULE_PACKAGE_PLACEHOLDER = ".ext" - val MULTIMODULE_ROOT_DRI = DRI(packageName = MULTIMODULE_PACKAGE_PLACEHOLDER, classNames = "allModules") + public companion object { + public const val MULTIMODULE_PACKAGE_PLACEHOLDER: String = ".ext" + public val MULTIMODULE_ROOT_DRI: DRI = + DRI(packageName = MULTIMODULE_PACKAGE_PLACEHOLDER, classNames = "allModules") } } diff --git a/plugins/all-modules-page/src/main/kotlin/ResolveLinkCommandHandler.kt b/plugins/all-modules-page/src/main/kotlin/ResolveLinkCommandHandler.kt index 9720199c..f6d34271 100644 --- a/plugins/all-modules-page/src/main/kotlin/ResolveLinkCommandHandler.kt +++ b/plugins/all-modules-page/src/main/kotlin/ResolveLinkCommandHandler.kt @@ -15,7 +15,7 @@ import org.jsoup.nodes.Element import org.jsoup.parser.Tag import java.io.File -class ResolveLinkCommandHandler(context: DokkaContext) : CommandHandler { +public class ResolveLinkCommandHandler(context: DokkaContext) : CommandHandler { private val externalModuleLinkResolver = context.plugin().querySingle { externalModuleLinkResolver } diff --git a/plugins/android-documentation/src/main/kotlin/AndroidDocumentationPlugin.kt b/plugins/android-documentation/src/main/kotlin/AndroidDocumentationPlugin.kt index 039f2485..089a19a4 100644 --- a/plugins/android-documentation/src/main/kotlin/AndroidDocumentationPlugin.kt +++ b/plugins/android-documentation/src/main/kotlin/AndroidDocumentationPlugin.kt @@ -8,12 +8,15 @@ import org.jetbrains.dokka.android.transformers.HideTagDocumentableFilter import org.jetbrains.dokka.base.DokkaBase import org.jetbrains.dokka.plugability.DokkaPlugin import org.jetbrains.dokka.plugability.DokkaPluginApiPreview +import org.jetbrains.dokka.plugability.Extension import org.jetbrains.dokka.plugability.PluginApiPreviewAcknowledgement +import org.jetbrains.dokka.transformers.documentation.PreMergeDocumentableTransformer + +public class AndroidDocumentationPlugin : DokkaPlugin() { -class AndroidDocumentationPlugin : DokkaPlugin() { private val dokkaBase by lazy { plugin() } - val suppressedByHideTagDocumentableFilter by extending { + public val suppressedByHideTagDocumentableFilter: Extension by extending { dokkaBase.preMergeDocumentableTransformer providing ::HideTagDocumentableFilter order { before(dokkaBase.emptyPackagesFilter) } } diff --git a/plugins/android-documentation/src/main/kotlin/transformers/HideTagDocumentableFilter.kt b/plugins/android-documentation/src/main/kotlin/transformers/HideTagDocumentableFilter.kt index d746e7a1..ec05efc5 100644 --- a/plugins/android-documentation/src/main/kotlin/transformers/HideTagDocumentableFilter.kt +++ b/plugins/android-documentation/src/main/kotlin/transformers/HideTagDocumentableFilter.kt @@ -10,7 +10,7 @@ import org.jetbrains.dokka.model.dfs import org.jetbrains.dokka.model.doc.CustomTagWrapper import org.jetbrains.dokka.plugability.DokkaContext -class HideTagDocumentableFilter(val dokkaContext: DokkaContext) : +public class HideTagDocumentableFilter(public val dokkaContext: DokkaContext) : SuppressedByConditionDocumentableFilterTransformer(dokkaContext) { override fun shouldBeSuppressed(d: Documentable): Boolean = diff --git a/plugins/base/api/base.api b/plugins/base/api/base.api index fb55fe94..360073fe 100644 --- a/plugins/base/api/base.api +++ b/plugins/base/api/base.api @@ -1,7 +1,6 @@ public final class org/jetbrains/dokka/analysis/AnalysisContext : java/io/Closeable { public fun (Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V - public fun close ()Ljava/lang/Void; - public synthetic fun close ()V + public fun close ()V public final fun component1 ()Ljava/lang/Object; public final fun component2 ()Ljava/lang/Object; public final fun getEnvironment ()Ljava/lang/Object; @@ -277,8 +276,7 @@ public final class org/jetbrains/dokka/base/renderers/PackageListService$Compani public final class org/jetbrains/dokka/base/renderers/RootCreator : org/jetbrains/dokka/transformers/pages/PageTransformer { public static final field INSTANCE Lorg/jetbrains/dokka/base/renderers/RootCreator; - public fun invoke (Lorg/jetbrains/dokka/pages/RootPageNode;)Lorg/jetbrains/dokka/pages/RendererSpecificRootPage; - public synthetic fun invoke (Lorg/jetbrains/dokka/pages/RootPageNode;)Lorg/jetbrains/dokka/pages/RootPageNode; + public fun invoke (Lorg/jetbrains/dokka/pages/RootPageNode;)Lorg/jetbrains/dokka/pages/RootPageNode; } public abstract interface class org/jetbrains/dokka/base/renderers/TabSortingStrategy { @@ -412,8 +410,7 @@ public final class org/jetbrains/dokka/base/renderers/html/NavigationPage : org/ public final fun getModuleName ()Ljava/lang/String; public fun getName ()Ljava/lang/String; public final fun getRoot ()Lorg/jetbrains/dokka/base/renderers/html/NavigationNode; - public fun getStrategy ()Lorg/jetbrains/dokka/pages/RenderingStrategy$Callback; - public synthetic fun getStrategy ()Lorg/jetbrains/dokka/pages/RenderingStrategy; + public fun getStrategy ()Lorg/jetbrains/dokka/pages/RenderingStrategy; public fun modified (Ljava/lang/String;Ljava/util/List;)Lorg/jetbrains/dokka/base/renderers/html/NavigationPage; public synthetic fun modified (Ljava/lang/String;Ljava/util/List;)Lorg/jetbrains/dokka/pages/PageNode; } @@ -1103,7 +1100,7 @@ public final class org/jetbrains/dokka/base/transformers/documentables/CallableE public final class org/jetbrains/dokka/base/transformers/documentables/CallableExtensions$Key : org/jetbrains/dokka/model/properties/ExtraProperty$Key { public synthetic fun mergeStrategyFor (Ljava/lang/Object;Ljava/lang/Object;)Lorg/jetbrains/dokka/model/properties/MergeStrategy; - public fun mergeStrategyFor (Lorg/jetbrains/dokka/base/transformers/documentables/CallableExtensions;Lorg/jetbrains/dokka/base/transformers/documentables/CallableExtensions;)Lorg/jetbrains/dokka/model/properties/MergeStrategy$Replace; + public fun mergeStrategyFor (Lorg/jetbrains/dokka/base/transformers/documentables/CallableExtensions;Lorg/jetbrains/dokka/base/transformers/documentables/CallableExtensions;)Lorg/jetbrains/dokka/model/properties/MergeStrategy; } public final class org/jetbrains/dokka/base/transformers/documentables/ClashingDriIdentifier : org/jetbrains/dokka/model/properties/ExtraProperty { @@ -1504,8 +1501,8 @@ public class org/jetbrains/dokka/base/translators/documentables/PageContentBuild public static synthetic fun link$default (Lorg/jetbrains/dokka/base/translators/documentables/PageContentBuilder$DocumentableContentBuilder;Ljava/lang/String;Ljava/lang/String;Lorg/jetbrains/dokka/pages/Kind;Ljava/util/Set;Ljava/util/Set;Lorg/jetbrains/dokka/model/properties/PropertyContainer;ILjava/lang/Object;)V public static synthetic fun link$default (Lorg/jetbrains/dokka/base/translators/documentables/PageContentBuilder$DocumentableContentBuilder;Ljava/lang/String;Lorg/jetbrains/dokka/links/DRI;Lorg/jetbrains/dokka/pages/Kind;Ljava/util/Set;Ljava/util/Set;Lorg/jetbrains/dokka/model/properties/PropertyContainer;ILjava/lang/Object;)V public static synthetic fun link$default (Lorg/jetbrains/dokka/base/translators/documentables/PageContentBuilder$DocumentableContentBuilder;Lorg/jetbrains/dokka/links/DRI;Lorg/jetbrains/dokka/pages/Kind;Ljava/util/Set;Ljava/util/Set;Lorg/jetbrains/dokka/model/properties/PropertyContainer;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)V - public final fun linkNode (Ljava/lang/String;Lorg/jetbrains/dokka/links/DRI;Lorg/jetbrains/dokka/pages/DCI;Ljava/util/Set;Ljava/util/Set;Lorg/jetbrains/dokka/model/properties/PropertyContainer;)Lorg/jetbrains/dokka/pages/ContentDRILink; - public static synthetic fun linkNode$default (Lorg/jetbrains/dokka/base/translators/documentables/PageContentBuilder$DocumentableContentBuilder;Ljava/lang/String;Lorg/jetbrains/dokka/links/DRI;Lorg/jetbrains/dokka/pages/DCI;Ljava/util/Set;Ljava/util/Set;Lorg/jetbrains/dokka/model/properties/PropertyContainer;ILjava/lang/Object;)Lorg/jetbrains/dokka/pages/ContentDRILink; + public final fun linkNode (Ljava/lang/String;Lorg/jetbrains/dokka/links/DRI;Lorg/jetbrains/dokka/pages/DCI;Ljava/util/Set;Ljava/util/Set;Lorg/jetbrains/dokka/model/properties/PropertyContainer;)Lorg/jetbrains/dokka/pages/ContentLink; + public static synthetic fun linkNode$default (Lorg/jetbrains/dokka/base/translators/documentables/PageContentBuilder$DocumentableContentBuilder;Ljava/lang/String;Lorg/jetbrains/dokka/links/DRI;Lorg/jetbrains/dokka/pages/DCI;Ljava/util/Set;Ljava/util/Set;Lorg/jetbrains/dokka/model/properties/PropertyContainer;ILjava/lang/Object;)Lorg/jetbrains/dokka/pages/ContentLink; public final fun list (Ljava/util/List;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/Set;Ljava/util/Set;Ljava/util/Set;Lkotlin/jvm/functions/Function2;)V public static synthetic fun list$default (Lorg/jetbrains/dokka/base/translators/documentables/PageContentBuilder$DocumentableContentBuilder;Ljava/util/List;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/Set;Ljava/util/Set;Ljava/util/Set;Lkotlin/jvm/functions/Function2;ILjava/lang/Object;)V public final fun multiBlock (Ljava/lang/String;ILorg/jetbrains/dokka/pages/Kind;Ljava/lang/Iterable;Ljava/util/Set;Ljava/util/Set;Lorg/jetbrains/dokka/model/properties/PropertyContainer;ZZLjava/util/List;ZLkotlin/jvm/functions/Function3;)V diff --git a/plugins/base/base-test-utils/src/main/kotlin/renderers/JsoupUtils.kt b/plugins/base/base-test-utils/src/main/kotlin/renderers/JsoupUtils.kt index 9a715e39..fcd73ff0 100644 --- a/plugins/base/base-test-utils/src/main/kotlin/renderers/JsoupUtils.kt +++ b/plugins/base/base-test-utils/src/main/kotlin/renderers/JsoupUtils.kt @@ -8,7 +8,7 @@ import org.jsoup.nodes.Element import org.jsoup.nodes.Node import org.jsoup.nodes.TextNode -fun Element.match(vararg matchers: Any, ignoreSpanWithTokenStyle:Boolean = false): Unit = +public fun Element.match(vararg matchers: Any, ignoreSpanWithTokenStyle:Boolean = false): Unit = childNodes() .let { list -> if(ignoreSpanWithTokenStyle) { @@ -25,25 +25,28 @@ fun Element.match(vararg matchers: Any, ignoreSpanWithTokenStyle:Boolean = false .zip(matchers) .forEach { (n, m) -> m.accepts(n, ignoreSpan = ignoreSpanWithTokenStyle) } -open class Tag(val name: String, vararg val matchers: Any, val expectedClasses: List = emptyList()) -class Div(vararg matchers: Any) : Tag("div", *matchers) -class P(vararg matchers: Any) : Tag("p", *matchers) -class Span(vararg matchers: Any) : Tag("span", *matchers) -class A(vararg matchers: Any) : Tag("a", *matchers) -class B(vararg matchers: Any) : Tag("b", *matchers) -class I(vararg matchers: Any) : Tag("i", *matchers) -class STRIKE(vararg matchers: Any) : Tag("strike", *matchers) +public open class Tag( + public val name: String, + public vararg val matchers: Any, + public val expectedClasses: List = emptyList() +) +public class Div(vararg matchers: Any) : Tag("div", *matchers) +public class P(vararg matchers: Any) : Tag("p", *matchers) +public class Span(vararg matchers: Any) : Tag("span", *matchers) +public class A(vararg matchers: Any) : Tag("a", *matchers) +public class B(vararg matchers: Any) : Tag("b", *matchers) +public class I(vararg matchers: Any) : Tag("i", *matchers) +public class STRIKE(vararg matchers: Any) : Tag("strike", *matchers) +public class BlockQuote(vararg matchers: Any) : Tag("blockquote", *matchers) +public class Dl(vararg matchers: Any) : Tag("dl", *matchers) +public class Dt(vararg matchers: Any) : Tag("dt", *matchers) +public class Dd(vararg matchers: Any) : Tag("dd", *matchers) +public class Var(vararg matchers: Any) : Tag("var", *matchers) +public class U(vararg matchers: Any) : Tag("u", *matchers) +public object Wbr : Tag("wbr") +public object Br : Tag("br") -class BlockQuote(vararg matchers: Any) : Tag("blockquote", *matchers) -class Dl(vararg matchers: Any) : Tag("dl", *matchers) -class Dt(vararg matchers: Any) : Tag("dt", *matchers) -class Dd(vararg matchers: Any) : Tag("dd", *matchers) -class Var(vararg matchers: Any) : Tag("var", *matchers) -class U(vararg matchers: Any) : Tag("u", *matchers) -object Wbr : Tag("wbr") -object Br : Tag("br") - -fun Tag.withClasses(vararg classes: String) = Tag(name, *matchers, expectedClasses = classes.toList()) +public fun Tag.withClasses(vararg classes: String): Tag = Tag(name, *matchers, expectedClasses = classes.toList()) private fun Any.accepts(n: Node, ignoreSpan:Boolean = true) { when (this) { diff --git a/plugins/base/base-test-utils/src/main/kotlin/renderers/RenderingOnlyTestBase.kt b/plugins/base/base-test-utils/src/main/kotlin/renderers/RenderingOnlyTestBase.kt index cc050d0f..d2ff3ad4 100644 --- a/plugins/base/base-test-utils/src/main/kotlin/renderers/RenderingOnlyTestBase.kt +++ b/plugins/base/base-test-utils/src/main/kotlin/renderers/RenderingOnlyTestBase.kt @@ -6,7 +6,7 @@ package renderers import org.jetbrains.dokka.testApi.context.MockContext -abstract class RenderingOnlyTestBase { - abstract val context: MockContext - abstract val renderedContent: T +public abstract class RenderingOnlyTestBase { + public abstract val context: MockContext + public abstract val renderedContent: T } diff --git a/plugins/base/base-test-utils/src/main/kotlin/renderers/SignatureUtils.kt b/plugins/base/base-test-utils/src/main/kotlin/renderers/SignatureUtils.kt index da4cd732..ecbe809b 100644 --- a/plugins/base/base-test-utils/src/main/kotlin/renderers/SignatureUtils.kt +++ b/plugins/base/base-test-utils/src/main/kotlin/renderers/SignatureUtils.kt @@ -10,14 +10,14 @@ import org.jsoup.select.Elements import utils.Tag import utils.TestOutputWriter -fun TestOutputWriter.renderedContent(path: String = "root/example.html"): Element = +public fun TestOutputWriter.renderedContent(path: String = "root/example.html"): Element = contents.getValue(path).let { Jsoup.parse(it) }.select("#content") .single() -fun Element.signature(): Elements = select("div.symbol.monospace") -fun Element.tab(tabName: String): Elements = select("div[data-togglable=\"$tabName\"]") -fun Element.firstSignature(): Element = signature().first() ?: throw NoSuchElementException("No signature found") -fun Element.lastSignature(): Element = signature().last() ?: throw NoSuchElementException("No signature found") +public fun Element.signature(): Elements = select("div.symbol.monospace") +public fun Element.tab(tabName: String): Elements = select("div[data-togglable=\"$tabName\"]") +public fun Element.firstSignature(): Element = signature().first() ?: throw NoSuchElementException("No signature found") +public fun Element.lastSignature(): Element = signature().last() ?: throw NoSuchElementException("No signature found") -class Parameters(vararg matchers: Any) : Tag("span", *matchers, expectedClasses = listOf("parameters")) -class Parameter(vararg matchers: Any) : Tag("span", *matchers, expectedClasses = listOf("parameter")) +public class Parameters(vararg matchers: Any) : Tag("span", *matchers, expectedClasses = listOf("parameters")) +public class Parameter(vararg matchers: Any) : Tag("span", *matchers, expectedClasses = listOf("parameter")) diff --git a/plugins/base/base-test-utils/src/main/kotlin/renderers/TestPage.kt b/plugins/base/base-test-utils/src/main/kotlin/renderers/TestPage.kt index c5615f9b..6fb484bf 100644 --- a/plugins/base/base-test-utils/src/main/kotlin/renderers/TestPage.kt +++ b/plugins/base/base-test-utils/src/main/kotlin/renderers/TestPage.kt @@ -15,7 +15,7 @@ import org.jetbrains.dokka.pages.* import org.jetbrains.dokka.utilities.DokkaConsoleLogger import org.jetbrains.dokka.utilities.LoggingLevel -fun testPage(callback: PageContentBuilder.DocumentableContentBuilder.() -> Unit): RawTestPage { +public fun testPage(callback: PageContentBuilder.DocumentableContentBuilder.() -> Unit): RawTestPage { val content = PageContentBuilder( EmptyCommentConverter, KotlinSignatureProvider(EmptyCommentConverter, DokkaConsoleLogger(LoggingLevel.DEBUG)), @@ -29,7 +29,7 @@ fun testPage(callback: PageContentBuilder.DocumentableContentBuilder.() -> Unit) return RawTestPage(content) } -class RawTestPage( +public class RawTestPage( override val content: ContentNode, override val name: String = "testPage", override val dri: Set = setOf(DRI.topLevel), diff --git a/plugins/base/base-test-utils/src/main/kotlin/testRunner/baseTestApi.kt b/plugins/base/base-test-utils/src/main/kotlin/testRunner/baseTestApi.kt index d9b2b1d2..3dc0e54b 100644 --- a/plugins/base/base-test-utils/src/main/kotlin/testRunner/baseTestApi.kt +++ b/plugins/base/base-test-utils/src/main/kotlin/testRunner/baseTestApi.kt @@ -21,52 +21,54 @@ import org.jetbrains.dokka.utilities.DokkaConsoleLogger import org.jetbrains.dokka.utilities.DokkaLogger import org.jetbrains.dokka.utilities.LoggingLevel -class BaseDokkaTestGenerator( +public class BaseDokkaTestGenerator( configuration: DokkaConfiguration, logger: DokkaLogger, testMethods: BaseTestMethods, additionalPlugins: List = emptyList() ) : DokkaTestGenerator(configuration, logger, testMethods, additionalPlugins) { - override fun generate() = with(testMethods) { - val dokkaGenerator = DokkaGenerator(configuration, logger) + override fun generate() { + with(testMethods) { + val dokkaGenerator = DokkaGenerator(configuration, logger) - val context = - dokkaGenerator.initializePlugins(configuration, logger, additionalPlugins) - pluginsSetupStage(context) + val context = + dokkaGenerator.initializePlugins(configuration, logger, additionalPlugins) + pluginsSetupStage(context) - val singleModuleGeneration = context.single(CoreExtensions.generation) as SingleModuleGeneration + val singleModuleGeneration = context.single(CoreExtensions.generation) as SingleModuleGeneration - val modulesFromPlatforms = singleModuleGeneration.createDocumentationModels() - documentablesCreationStage(modulesFromPlatforms) + val modulesFromPlatforms = singleModuleGeneration.createDocumentationModels() + documentablesCreationStage(modulesFromPlatforms) - verificationStage { singleModuleGeneration.validityCheck(context) } + verificationStage { singleModuleGeneration.validityCheck(context) } - val filteredModules = singleModuleGeneration.transformDocumentationModelBeforeMerge(modulesFromPlatforms) - documentablesFirstTransformationStep(filteredModules) + val filteredModules = singleModuleGeneration.transformDocumentationModelBeforeMerge(modulesFromPlatforms) + documentablesFirstTransformationStep(filteredModules) - val documentationModel = singleModuleGeneration.mergeDocumentationModels(filteredModules) - documentablesMergingStage(documentationModel!!) + val documentationModel = singleModuleGeneration.mergeDocumentationModels(filteredModules) + documentablesMergingStage(documentationModel!!) - val transformedDocumentation = singleModuleGeneration.transformDocumentationModelAfterMerge(documentationModel) - documentablesTransformationStage(transformedDocumentation) + val transformedDocumentation = singleModuleGeneration.transformDocumentationModelAfterMerge(documentationModel) + documentablesTransformationStage(transformedDocumentation) - val pages = singleModuleGeneration.createPages(transformedDocumentation) - pagesGenerationStage(pages) + val pages = singleModuleGeneration.createPages(transformedDocumentation) + pagesGenerationStage(pages) - val transformedPages = singleModuleGeneration.transformPages(pages) - pagesTransformationStage(transformedPages) + val transformedPages = singleModuleGeneration.transformPages(pages) + pagesTransformationStage(transformedPages) - singleModuleGeneration.render(transformedPages) - renderingStage(transformedPages, context) + singleModuleGeneration.render(transformedPages) + renderingStage(transformedPages, context) - singleModuleGeneration.runPostActions() + singleModuleGeneration.runPostActions() - singleModuleGeneration.reportAfterRendering() + singleModuleGeneration.reportAfterRendering() + } } } -data class BaseTestMethods( +public data class BaseTestMethods( override val pluginsSetupStage: (DokkaContext) -> Unit, override val verificationStage: (() -> Unit) -> Unit, override val documentablesCreationStage: (List) -> Unit, @@ -87,31 +89,35 @@ data class BaseTestMethods( renderingStage, ) -class BaseTestBuilder : TestBuilder() { - var pluginsSetupStage: (DokkaContext) -> Unit = {} - var verificationStage: (() -> Unit) -> Unit = {} - var documentablesCreationStage: (List) -> Unit = {} - var preMergeDocumentablesTransformationStage: (List) -> Unit = {} - var documentablesMergingStage: (DModule) -> Unit = {} - var documentablesTransformationStage: (DModule) -> Unit = {} - var pagesGenerationStage: (RootPageNode) -> Unit = {} - var pagesTransformationStage: (RootPageNode) -> Unit = {} - var renderingStage: (RootPageNode, DokkaContext) -> Unit = { _, _ -> } - - override fun build() = BaseTestMethods( - pluginsSetupStage, - verificationStage, - documentablesCreationStage, - preMergeDocumentablesTransformationStage, - documentablesMergingStage, - documentablesTransformationStage, - pagesGenerationStage, - pagesTransformationStage, - renderingStage - ) +public class BaseTestBuilder : TestBuilder() { + public var pluginsSetupStage: (DokkaContext) -> Unit = {} + public var verificationStage: (() -> Unit) -> Unit = {} + public var documentablesCreationStage: (List) -> Unit = {} + public var preMergeDocumentablesTransformationStage: (List) -> Unit = {} + public var documentablesMergingStage: (DModule) -> Unit = {} + public var documentablesTransformationStage: (DModule) -> Unit = {} + public var pagesGenerationStage: (RootPageNode) -> Unit = {} + public var pagesTransformationStage: (RootPageNode) -> Unit = {} + public var renderingStage: (RootPageNode, DokkaContext) -> Unit = { _, _ -> } + + override fun build(): BaseTestMethods { + return BaseTestMethods( + pluginsSetupStage, + verificationStage, + documentablesCreationStage, + preMergeDocumentablesTransformationStage, + documentablesMergingStage, + documentablesTransformationStage, + pagesGenerationStage, + pagesTransformationStage, + renderingStage + ) + } } -abstract class BaseAbstractTest(logger: TestLogger = TestLogger(DokkaConsoleLogger(LoggingLevel.DEBUG))) : AbstractTest( +public abstract class BaseAbstractTest( + logger: TestLogger = TestLogger(DokkaConsoleLogger(LoggingLevel.DEBUG)) +) : AbstractTest( ::BaseTestBuilder, ::BaseDokkaTestGenerator, logger, diff --git a/plugins/base/base-test-utils/src/main/kotlin/utils/TestOutputWriter.kt b/plugins/base/base-test-utils/src/main/kotlin/utils/TestOutputWriter.kt index 578bbfe7..089a94ca 100644 --- a/plugins/base/base-test-utils/src/main/kotlin/utils/TestOutputWriter.kt +++ b/plugins/base/base-test-utils/src/main/kotlin/utils/TestOutputWriter.kt @@ -8,15 +8,16 @@ import org.jetbrains.dokka.base.DokkaBase import org.jetbrains.dokka.base.renderers.OutputWriter import org.jetbrains.dokka.plugability.DokkaPlugin import org.jetbrains.dokka.plugability.DokkaPluginApiPreview +import org.jetbrains.dokka.plugability.Extension import org.jetbrains.dokka.plugability.PluginApiPreviewAcknowledgement import java.util.* -class TestOutputWriterPlugin(failOnOverwrite: Boolean = true) : DokkaPlugin() { - val writer = TestOutputWriter(failOnOverwrite) +public class TestOutputWriterPlugin(failOnOverwrite: Boolean = true) : DokkaPlugin() { + public val writer: TestOutputWriter = TestOutputWriter(failOnOverwrite) private val dokkaBase by lazy { plugin() } - val testWriter by extending { + public val testWriter: Extension by extending { (dokkaBase.outputWriter with writer override dokkaBase.fileWriter) @@ -27,10 +28,12 @@ class TestOutputWriterPlugin(failOnOverwrite: Boolean = true) : DokkaPlugin() { PluginApiPreviewAcknowledgement } -class TestOutputWriter(private val failOnOverwrite: Boolean = true) : OutputWriter { - val contents: Map get() = _contents - +public class TestOutputWriter( + private val failOnOverwrite: Boolean = true +) : OutputWriter { + public val contents: Map get() = _contents private val _contents = Collections.synchronizedMap(mutableMapOf()) + override suspend fun write(path: String, text: String, ext: String) { val fullPath = "$path$ext" _contents.putIfAbsent(fullPath, text)?.also { @@ -38,6 +41,7 @@ class TestOutputWriter(private val failOnOverwrite: Boolean = true) : OutputWrit } } - override suspend fun writeResources(pathFrom: String, pathTo: String) = + override suspend fun writeResources(pathFrom: String, pathTo: String) { write(pathTo, "*** content of $pathFrom ***", "") + } } diff --git a/plugins/base/base-test-utils/src/main/kotlin/utils/assertHtmlEqualsIgnoringWhitespace.kt b/plugins/base/base-test-utils/src/main/kotlin/utils/assertHtmlEqualsIgnoringWhitespace.kt index 5b2ed612..207ebb8a 100644 --- a/plugins/base/base-test-utils/src/main/kotlin/utils/assertHtmlEqualsIgnoringWhitespace.kt +++ b/plugins/base/base-test-utils/src/main/kotlin/utils/assertHtmlEqualsIgnoringWhitespace.kt @@ -12,7 +12,7 @@ import kotlin.test.assertEquals * Parses it using JSOUP, trims whitespace at the end of the line and asserts if they are equal * parsing is required to unify the formatting */ -fun assertHtmlEqualsIgnoringWhitespace(expected: String, actual: String) { +public fun assertHtmlEqualsIgnoringWhitespace(expected: String, actual: String) { val ignoreFormattingSettings = Document.OutputSettings().indentAmount(0).outline(true) assertEquals( Jsoup.parse(expected).outputSettings(ignoreFormattingSettings).outerHtml().trimSpacesAtTheEndOfLine(), diff --git a/plugins/base/src/main/kotlin/DokkaBase.kt b/plugins/base/src/main/kotlin/DokkaBase.kt index bd429c34..dfec2c15 100644 --- a/plugins/base/src/main/kotlin/DokkaBase.kt +++ b/plugins/base/src/main/kotlin/DokkaBase.kt @@ -30,67 +30,70 @@ import org.jetbrains.dokka.base.transformers.pages.sourcelinks.SourceLinksTransf import org.jetbrains.dokka.base.transformers.pages.tags.CustomTagContentProvider import org.jetbrains.dokka.base.transformers.pages.tags.SinceKotlinTagContentProvider import org.jetbrains.dokka.base.translators.documentables.DefaultDocumentableToPageTranslator -import org.jetbrains.dokka.plugability.DokkaPlugin -import org.jetbrains.dokka.plugability.DokkaPluginApiPreview -import org.jetbrains.dokka.plugability.PluginApiPreviewAcknowledgement +import org.jetbrains.dokka.generation.Generation +import org.jetbrains.dokka.plugability.* +import org.jetbrains.dokka.renderers.Renderer +import org.jetbrains.dokka.transformers.documentation.DocumentableMerger +import org.jetbrains.dokka.transformers.documentation.DocumentableToPageTranslator +import org.jetbrains.dokka.transformers.documentation.DocumentableTransformer import org.jetbrains.dokka.transformers.documentation.PreMergeDocumentableTransformer import org.jetbrains.dokka.transformers.pages.PageTransformer @Suppress("unused") -class DokkaBase : DokkaPlugin() { - - val preMergeDocumentableTransformer by extensionPoint() - val pageMergerStrategy by extensionPoint() - val commentsToContentConverter by extensionPoint() - val customTagContentProvider by extensionPoint() - val signatureProvider by extensionPoint() - val locationProviderFactory by extensionPoint() - val externalLocationProviderFactory by extensionPoint() - val outputWriter by extensionPoint() - val htmlPreprocessors by extensionPoint() +public class DokkaBase : DokkaPlugin() { + + public val preMergeDocumentableTransformer: ExtensionPoint by extensionPoint() + public val pageMergerStrategy: ExtensionPoint by extensionPoint() + public val commentsToContentConverter: ExtensionPoint by extensionPoint() + public val customTagContentProvider: ExtensionPoint by extensionPoint() + public val signatureProvider: ExtensionPoint by extensionPoint() + public val locationProviderFactory: ExtensionPoint by extensionPoint() + public val externalLocationProviderFactory: ExtensionPoint by extensionPoint() + public val outputWriter: ExtensionPoint by extensionPoint() + public val htmlPreprocessors: ExtensionPoint by extensionPoint() @Deprecated("It is not used anymore") - val tabSortingStrategy by extensionPoint() - val immediateHtmlCommandConsumer by extensionPoint() + public val tabSortingStrategy: ExtensionPoint by extensionPoint() + public val immediateHtmlCommandConsumer: ExtensionPoint by extensionPoint() - val singleGeneration by extending { + public val singleGeneration: Extension by extending { CoreExtensions.generation providing ::SingleModuleGeneration } - val documentableMerger by extending { + public val documentableMerger: Extension by extending { CoreExtensions.documentableMerger providing ::DefaultDocumentableMerger } - val deprecatedDocumentableFilter by extending { + public val deprecatedDocumentableFilter: Extension by extending { preMergeDocumentableTransformer providing ::DeprecatedDocumentableFilterTransformer } - val suppressedDocumentableFilter by extending { + public val suppressedDocumentableFilter: Extension by extending { preMergeDocumentableTransformer providing ::SuppressedByConfigurationDocumentableFilterTransformer } - val suppressedBySuppressTagDocumentableFilter by extending { + public val suppressedBySuppressTagDocumentableFilter: Extension by extending { preMergeDocumentableTransformer providing ::SuppressTagDocumentableFilter } - val documentableVisibilityFilter by extending { + public val documentableVisibilityFilter: Extension by extending { preMergeDocumentableTransformer providing ::DocumentableVisibilityFilterTransformer } - val obviousFunctionsVisbilityFilter by extending { + public val obviousFunctionsVisbilityFilter: Extension by extending { preMergeDocumentableTransformer providing ::ObviousFunctionsDocumentableFilterTransformer } - val inheritedEntriesVisbilityFilter by extending { + public val inheritedEntriesVisbilityFilter: Extension by extending { preMergeDocumentableTransformer providing ::InheritedEntriesDocumentableFilterTransformer } - val kotlinArrayDocumentableReplacer by extending { + public val kotlinArrayDocumentableReplacer: Extension by extending { preMergeDocumentableTransformer providing ::KotlinArrayDocumentableReplacerTransformer } - val emptyPackagesFilter by extending { + public val emptyPackagesFilter: Extension by extending { preMergeDocumentableTransformer providing ::EmptyPackagesFilterTransformer order { after( deprecatedDocumentableFilter, @@ -103,124 +106,127 @@ class DokkaBase : DokkaPlugin() { } } - val emptyModulesFilter by extending { + public val emptyModulesFilter: Extension by extending { preMergeDocumentableTransformer with EmptyModulesFilterTransformer() order { after(emptyPackagesFilter) } } - val modulesAndPackagesDocumentation by extending { + public val modulesAndPackagesDocumentation: Extension by extending { preMergeDocumentableTransformer providing ::ModuleAndPackageDocumentationTransformer } - val actualTypealiasAdder by extending { + public val actualTypealiasAdder: Extension by extending { CoreExtensions.documentableTransformer with ActualTypealiasAdder() } - val kotlinSignatureProvider by extending { + public val kotlinSignatureProvider: Extension by extending { signatureProvider providing ::KotlinSignatureProvider } - val sinceKotlinTransformer by extending { - CoreExtensions.documentableTransformer providing ::SinceKotlinTransformer applyIf { SinceKotlinTransformer.shouldDisplaySinceKotlin() } order { + public val sinceKotlinTransformer: Extension by extending { + CoreExtensions.documentableTransformer providing ::SinceKotlinTransformer applyIf { + SinceKotlinTransformer.shouldDisplaySinceKotlin() + } order { before(extensionsExtractor) } } - val inheritorsExtractor by extending { + public val inheritorsExtractor: Extension by extending { CoreExtensions.documentableTransformer with InheritorsExtractorTransformer() } - val undocumentedCodeReporter by extending { + public val undocumentedCodeReporter: Extension by extending { CoreExtensions.documentableTransformer with ReportUndocumentedTransformer() } - val extensionsExtractor by extending { + public val extensionsExtractor: Extension by extending { CoreExtensions.documentableTransformer with ExtensionExtractorTransformer() } - val documentableToPageTranslator by extending { + public val documentableToPageTranslator: Extension by extending { CoreExtensions.documentableToPageTranslator providing ::DefaultDocumentableToPageTranslator } - val docTagToContentConverter by extending { + public val docTagToContentConverter: Extension by extending { commentsToContentConverter with DocTagToContentConverter() } - val sinceKotlinTagContentProvider by extending { - customTagContentProvider with SinceKotlinTagContentProvider applyIf { SinceKotlinTransformer.shouldDisplaySinceKotlin() } + public val sinceKotlinTagContentProvider: Extension by extending { + customTagContentProvider with SinceKotlinTagContentProvider applyIf { + SinceKotlinTransformer.shouldDisplaySinceKotlin() + } } - val pageMerger by extending { - CoreExtensions.pageTransformer providing ::PageMerger order { - } + public val pageMerger: Extension by extending { + CoreExtensions.pageTransformer providing ::PageMerger } - val sourceSetMerger by extending { + public val sourceSetMerger: Extension by extending { CoreExtensions.pageTransformer providing ::SourceSetMergingPageTransformer } - val fallbackMerger by extending { + public val fallbackMerger: Extension by extending { pageMergerStrategy providing { ctx -> FallbackPageMergerStrategy(ctx.logger) } } - val sameMethodNameMerger by extending { + public val sameMethodNameMerger: Extension by extending { pageMergerStrategy providing { ctx -> SameMethodNamePageMergerStrategy(ctx.logger) } order { before(fallbackMerger) } } - val htmlRenderer by extending { + public val htmlRenderer: Extension by extending { CoreExtensions.renderer providing ::HtmlRenderer } - val locationProvider by extending { + public val locationProvider: Extension by extending { locationProviderFactory providing ::DokkaLocationProviderFactory } - val javadocLocationProvider by extending { + public val javadocLocationProvider: Extension by extending { externalLocationProviderFactory providing ::JavadocExternalLocationProviderFactory } - val dokkaLocationProvider by extending { + public val dokkaLocationProvider: Extension by extending { externalLocationProviderFactory providing ::DefaultExternalLocationProviderFactory } - val fileWriter by extending { + public val fileWriter: Extension by extending { outputWriter providing ::FileWriter } - val rootCreator by extending { + public val rootCreator: Extension by extending {