aboutsummaryrefslogtreecommitdiff
path: root/plugins/base/src/main
diff options
context:
space:
mode:
authorPaweł Marks <pmarks@virtuslab.com>2020-07-17 16:36:09 +0200
committerPaweł Marks <pmarks@virtuslab.com>2020-07-17 16:36:09 +0200
commit6996b1135f61c7d2cb60b0652c6a2691dda31990 (patch)
treed568096c25e31c28d14d518a63458b5a7526b896 /plugins/base/src/main
parentde56cab76f556e5b4af0b8c8cb08d8b482b86d0a (diff)
parent1c3530dcbb50c347f80bef694829dbefe89eca77 (diff)
downloaddokka-6996b1135f61c7d2cb60b0652c6a2691dda31990.tar.gz
dokka-6996b1135f61c7d2cb60b0652c6a2691dda31990.tar.bz2
dokka-6996b1135f61c7d2cb60b0652c6a2691dda31990.zip
Merge branch 'dev-0.11.0'
Diffstat (limited to 'plugins/base/src/main')
-rw-r--r--plugins/base/src/main/kotlin/DokkaBase.kt225
-rw-r--r--plugins/base/src/main/kotlin/allModulePage/MultimodulePageCreator.kt81
-rw-r--r--plugins/base/src/main/kotlin/parsers/HtmlParser.kt89
-rw-r--r--plugins/base/src/main/kotlin/parsers/MarkdownParser.kt420
-rw-r--r--plugins/base/src/main/kotlin/parsers/Parser.kt42
-rw-r--r--plugins/base/src/main/kotlin/parsers/factories/DocTagsFromIElementFactory.kt43
-rw-r--r--plugins/base/src/main/kotlin/parsers/factories/DocTagsFromStringFactory.kt77
-rw-r--r--plugins/base/src/main/kotlin/renderers/DefaultRenderer.kt200
-rw-r--r--plugins/base/src/main/kotlin/renderers/DefaultTabSortingStrategy.kt31
-rw-r--r--plugins/base/src/main/kotlin/renderers/FileWriter.kt88
-rw-r--r--plugins/base/src/main/kotlin/renderers/OutputWriter.kt7
-rw-r--r--plugins/base/src/main/kotlin/renderers/PackageListService.kt51
-rw-r--r--plugins/base/src/main/kotlin/renderers/TabSortingStrategy.kt7
-rw-r--r--plugins/base/src/main/kotlin/renderers/html/HtmlRenderer.kt760
-rw-r--r--plugins/base/src/main/kotlin/renderers/html/NavigationPage.kt51
-rw-r--r--plugins/base/src/main/kotlin/renderers/html/Tags.kt12
-rw-r--r--plugins/base/src/main/kotlin/renderers/html/htmlPreprocessors.kt112
-rw-r--r--plugins/base/src/main/kotlin/renderers/preprocessors.kt27
-rw-r--r--plugins/base/src/main/kotlin/resolvers/anchors/AnchorsHint.kt9
-rw-r--r--plugins/base/src/main/kotlin/resolvers/external/DokkaExternalLocationProviderFactory.kt35
-rw-r--r--plugins/base/src/main/kotlin/resolvers/external/ExternalLocationProviderFactory.kt26
-rw-r--r--plugins/base/src/main/kotlin/resolvers/external/JavadocExternalLocationProviderFactory.kt37
-rw-r--r--plugins/base/src/main/kotlin/resolvers/local/BaseLocationProvider.kt142
-rw-r--r--plugins/base/src/main/kotlin/resolvers/local/DefaultLocationProvider.kt217
-rw-r--r--plugins/base/src/main/kotlin/resolvers/local/DefaultLocationProviderFactory.kt23
-rw-r--r--plugins/base/src/main/kotlin/resolvers/local/LocationProvider.kt18
-rw-r--r--plugins/base/src/main/kotlin/resolvers/local/MultimoduleLocationProvider.kt32
-rw-r--r--plugins/base/src/main/kotlin/signatures/JvmSignatureUtils.kt141
-rw-r--r--plugins/base/src/main/kotlin/signatures/KotlinSignatureProvider.kt382
-rw-r--r--plugins/base/src/main/kotlin/signatures/KotlinSignatureUtils.kt48
-rw-r--r--plugins/base/src/main/kotlin/signatures/SignatureProvider.kt8
-rw-r--r--plugins/base/src/main/kotlin/transformers/documentables/ActualTypealiasAdder.kt84
-rw-r--r--plugins/base/src/main/kotlin/transformers/documentables/DefaultDocumentableMerger.kt200
-rw-r--r--plugins/base/src/main/kotlin/transformers/documentables/DeprecatedDocumentableFilterTransformer.kt258
-rw-r--r--plugins/base/src/main/kotlin/transformers/documentables/DocumentableVisibilityFilterTransformer.kt327
-rw-r--r--plugins/base/src/main/kotlin/transformers/documentables/EmptyPackagesFilterTransformer.kt28
-rw-r--r--plugins/base/src/main/kotlin/transformers/documentables/ExtensionExtractorTransformer.kt127
-rw-r--r--plugins/base/src/main/kotlin/transformers/documentables/InheritorsExtractorTransformer.kt85
-rw-r--r--plugins/base/src/main/kotlin/transformers/documentables/ModuleAndPackageDocumentationTransformer.kt108
-rw-r--r--plugins/base/src/main/kotlin/transformers/documentables/ReportUndocumentedTransformer.kt165
-rw-r--r--plugins/base/src/main/kotlin/transformers/pages/annotations/SinceKotlinTransformer.kt82
-rw-r--r--plugins/base/src/main/kotlin/transformers/pages/comments/CommentsToContentConverter.kt16
-rw-r--r--plugins/base/src/main/kotlin/transformers/pages/comments/DocTagToContentConverter.kt178
-rw-r--r--plugins/base/src/main/kotlin/transformers/pages/merger/FallbackPageMergerStrategy.kt12
-rw-r--r--plugins/base/src/main/kotlin/transformers/pages/merger/PageMerger.kt29
-rw-r--r--plugins/base/src/main/kotlin/transformers/pages/merger/PageMergerStrategy.kt9
-rw-r--r--plugins/base/src/main/kotlin/transformers/pages/merger/SameMethodNamePageMergerStrategy.kt40
-rw-r--r--plugins/base/src/main/kotlin/transformers/pages/samples/DefaultSamplesTransformer.kt38
-rw-r--r--plugins/base/src/main/kotlin/transformers/pages/samples/KotlinWebsiteSamplesTransformer.kt196
-rw-r--r--plugins/base/src/main/kotlin/transformers/pages/samples/SamplesTransformer.kt151
-rw-r--r--plugins/base/src/main/kotlin/transformers/pages/sourcelinks/SourceLinksTransformer.kt130
-rw-r--r--plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt782
-rw-r--r--plugins/base/src/main/kotlin/translators/documentables/DefaultDocumentableToPageTranslator.kt17
-rw-r--r--plugins/base/src/main/kotlin/translators/documentables/DefaultPageCreator.kt525
-rw-r--r--plugins/base/src/main/kotlin/translators/documentables/PageContentBuilder.kt474
-rw-r--r--plugins/base/src/main/kotlin/translators/psi/DefaultPsiToDocumentableTranslator.kt480
-rw-r--r--plugins/base/src/main/kotlin/translators/psi/JavadocParser.kt216
-rw-r--r--plugins/base/src/main/resources/META-INF/services/org.jetbrains.dokka.plugability.DokkaPlugin1
-rw-r--r--plugins/base/src/main/resources/dokka/format/gfm.properties2
-rw-r--r--plugins/base/src/main/resources/dokka/format/html-as-java.properties2
-rw-r--r--plugins/base/src/main/resources/dokka/format/html.properties2
-rw-r--r--plugins/base/src/main/resources/dokka/format/java-layout-html.properties2
-rw-r--r--plugins/base/src/main/resources/dokka/format/jekyll.properties2
-rw-r--r--plugins/base/src/main/resources/dokka/format/kotlin-website-html.properties2
-rw-r--r--plugins/base/src/main/resources/dokka/format/markdown.properties2
-rwxr-xr-xplugins/base/src/main/resources/dokka/images/arrow_down.svg3
-rw-r--r--plugins/base/src/main/resources/dokka/images/docs_logo.svg7
-rwxr-xr-xplugins/base/src/main/resources/dokka/images/logo-icon.svg3
-rwxr-xr-xplugins/base/src/main/resources/dokka/images/logo-text.svg6
-rw-r--r--plugins/base/src/main/resources/dokka/inbound-link-resolver/dokka-default.properties2
-rw-r--r--plugins/base/src/main/resources/dokka/inbound-link-resolver/java-layout-html.properties2
-rw-r--r--plugins/base/src/main/resources/dokka/inbound-link-resolver/javadoc.properties2
-rw-r--r--plugins/base/src/main/resources/dokka/scripts/clipboard.js52
-rw-r--r--plugins/base/src/main/resources/dokka/scripts/navigationLoader.js54
-rw-r--r--plugins/base/src/main/resources/dokka/scripts/platformContentHandler.js226
-rw-r--r--plugins/base/src/main/resources/dokka/scripts/scripts.js11
-rw-r--r--plugins/base/src/main/resources/dokka/scripts/search.js7
-rw-r--r--plugins/base/src/main/resources/dokka/styles/jetbrains-mono.css13
-rw-r--r--plugins/base/src/main/resources/dokka/styles/style.css1048
79 files changed, 9649 insertions, 0 deletions
diff --git a/plugins/base/src/main/kotlin/DokkaBase.kt b/plugins/base/src/main/kotlin/DokkaBase.kt
new file mode 100644
index 00000000..6586f2dc
--- /dev/null
+++ b/plugins/base/src/main/kotlin/DokkaBase.kt
@@ -0,0 +1,225 @@
+@file:Suppress("unused")
+
+package org.jetbrains.dokka.base
+
+import org.jetbrains.dokka.CoreExtensions
+import org.jetbrains.dokka.analysis.KotlinAnalysis
+import org.jetbrains.dokka.base.allModulePage.MultimodulePageCreator
+import org.jetbrains.dokka.base.renderers.*
+import org.jetbrains.dokka.base.renderers.html.*
+import org.jetbrains.dokka.base.signatures.KotlinSignatureProvider
+import org.jetbrains.dokka.base.signatures.SignatureProvider
+import org.jetbrains.dokka.base.resolvers.external.*
+import org.jetbrains.dokka.base.resolvers.local.DefaultLocationProviderFactory
+import org.jetbrains.dokka.base.resolvers.local.LocationProviderFactory
+import org.jetbrains.dokka.base.transformers.documentables.*
+import org.jetbrains.dokka.base.transformers.documentables.DefaultDocumentableMerger
+import org.jetbrains.dokka.base.transformers.documentables.ModuleAndPackageDocumentationTransformer
+import org.jetbrains.dokka.base.transformers.documentables.ReportUndocumentedTransformer
+import org.jetbrains.dokka.base.transformers.pages.annotations.SinceKotlinTransformer
+import org.jetbrains.dokka.base.transformers.pages.comments.CommentsToContentConverter
+import org.jetbrains.dokka.base.transformers.pages.comments.DocTagToContentConverter
+import org.jetbrains.dokka.base.transformers.pages.merger.FallbackPageMergerStrategy
+import org.jetbrains.dokka.base.transformers.pages.merger.PageMerger
+import org.jetbrains.dokka.base.transformers.pages.merger.PageMergerStrategy
+import org.jetbrains.dokka.base.transformers.pages.merger.SameMethodNamePageMergerStrategy
+import org.jetbrains.dokka.base.transformers.pages.samples.DefaultSamplesTransformer
+import org.jetbrains.dokka.base.transformers.pages.sourcelinks.SourceLinksTransformer
+import org.jetbrains.dokka.base.translators.descriptors.DefaultDescriptorToDocumentableTranslator
+import org.jetbrains.dokka.base.translators.documentables.DefaultDocumentableToPageTranslator
+import org.jetbrains.dokka.base.translators.documentables.PageContentBuilder
+import org.jetbrains.dokka.base.translators.psi.DefaultPsiToDocumentableTranslator
+import org.jetbrains.dokka.plugability.DokkaPlugin
+import org.jetbrains.dokka.transformers.pages.PageTransformer
+
+class DokkaBase : DokkaPlugin() {
+ val pageMergerStrategy by extensionPoint<PageMergerStrategy>()
+ val commentsToContentConverter by extensionPoint<CommentsToContentConverter>()
+ val signatureProvider by extensionPoint<SignatureProvider>()
+ val locationProviderFactory by extensionPoint<LocationProviderFactory>()
+ val externalLocationProviderFactory by extensionPoint<ExternalLocationProviderFactory>()
+ val outputWriter by extensionPoint<OutputWriter>()
+ val htmlPreprocessors by extensionPoint<PageTransformer>()
+ val kotlinAnalysis by extensionPoint<KotlinAnalysis>()
+ val tabSortingStrategy by extensionPoint<TabSortingStrategy>()
+
+
+ val descriptorToDocumentableTranslator by extending {
+ CoreExtensions.sourceToDocumentableTranslator providing { ctx ->
+ DefaultDescriptorToDocumentableTranslator(ctx.single(kotlinAnalysis))
+ }
+ }
+
+ val psiToDocumentableTranslator by extending {
+ CoreExtensions.sourceToDocumentableTranslator providing { ctx ->
+ DefaultPsiToDocumentableTranslator(ctx.single(kotlinAnalysis))
+ }
+ }
+
+ val documentableMerger by extending {
+ CoreExtensions.documentableMerger with DefaultDocumentableMerger
+ }
+
+ val deprecatedDocumentableFilter by extending {
+ CoreExtensions.preMergeDocumentableTransformer providing ::DeprecatedDocumentableFilterTransformer
+ }
+
+ val documentableVisbilityFilter by extending {
+ CoreExtensions.preMergeDocumentableTransformer providing ::DocumentableVisibilityFilterTransformer
+ }
+
+ val emptyPackagesFilter by extending {
+ CoreExtensions.preMergeDocumentableTransformer providing ::EmptyPackagesFilterTransformer order {
+ after(deprecatedDocumentableFilter, documentableVisbilityFilter)
+ }
+ }
+
+ val actualTypealiasAdder by extending {
+ CoreExtensions.documentableTransformer with ActualTypealiasAdder()
+ }
+
+ val modulesAndPackagesDocumentation by extending {
+ CoreExtensions.preMergeDocumentableTransformer providing { ctx ->
+ ModuleAndPackageDocumentationTransformer(ctx, ctx.single(kotlinAnalysis))
+ }
+ }
+
+ val kotlinSignatureProvider by extending {
+ signatureProvider providing { ctx ->
+ KotlinSignatureProvider(ctx.single(commentsToContentConverter), ctx.logger)
+ }
+ }
+
+ val sinceKotlinTransformer by extending {
+ CoreExtensions.documentableTransformer providing ::SinceKotlinTransformer
+ }
+
+ val inheritorsExtractor by extending {
+ CoreExtensions.documentableTransformer with InheritorsExtractorTransformer()
+ }
+
+
+ val undocumentedCodeReporter by extending {
+ CoreExtensions.documentableTransformer with ReportUndocumentedTransformer()
+ }
+
+ val extensionsExtractor by extending {
+ CoreExtensions.documentableTransformer with ExtensionExtractorTransformer()
+ }
+
+ val documentableToPageTranslator by extending {
+ CoreExtensions.documentableToPageTranslator providing { ctx ->
+ DefaultDocumentableToPageTranslator(
+ ctx.single(commentsToContentConverter),
+ ctx.single(signatureProvider),
+ ctx.logger
+ )
+ }
+ }
+
+ val docTagToContentConverter by extending {
+ commentsToContentConverter with DocTagToContentConverter
+ }
+
+ val pageMerger by extending {
+ CoreExtensions.pageTransformer providing { ctx -> PageMerger(ctx[pageMergerStrategy]) }
+ }
+
+ val fallbackMerger by extending {
+ pageMergerStrategy providing { ctx -> FallbackPageMergerStrategy(ctx.logger) }
+ }
+
+ val sameMethodNameMerger by extending {
+ pageMergerStrategy providing { ctx -> SameMethodNamePageMergerStrategy(ctx.logger) } order {
+ before(fallbackMerger)
+ }
+ }
+
+ val defaultTabSortingStrategy by extending {
+ tabSortingStrategy with DefaultTabSortingStrategy()
+ }
+
+ val htmlRenderer by extending {
+ CoreExtensions.renderer providing ::HtmlRenderer
+ }
+
+
+ val defaultKotlinAnalysis by extending {
+ kotlinAnalysis providing { ctx -> KotlinAnalysis(ctx) }
+ }
+
+ val locationProvider by extending {
+ locationProviderFactory providing ::DefaultLocationProviderFactory
+ }
+
+ val javadocLocationProvider by extending {
+ externalLocationProviderFactory with JavadocExternalLocationProviderFactory()
+ }
+
+ val dokkaLocationProvider by extending {
+ externalLocationProviderFactory with DokkaExternalLocationProviderFactory()
+ }
+
+ val fileWriter by extending {
+ outputWriter providing ::FileWriter
+ }
+
+ val rootCreator by extending {
+ htmlPreprocessors with RootCreator
+ }
+
+ val defaultSamplesTransformer by extending {
+ CoreExtensions.pageTransformer providing ::DefaultSamplesTransformer order {
+ before(pageMerger)
+ }
+ }
+
+ val sourceLinksTransformer by extending {
+ htmlPreprocessors providing {
+ SourceLinksTransformer(
+ it,
+ PageContentBuilder(
+ it.single(commentsToContentConverter),
+ it.single(signatureProvider),
+ it.logger
+ )
+ )
+ } order { after(rootCreator) }
+ }
+
+ val navigationPageInstaller by extending {
+ htmlPreprocessors with NavigationPageInstaller order { after(rootCreator) }
+ }
+
+ val searchPageInstaller by extending {
+ htmlPreprocessors with SearchPageInstaller order { after(rootCreator) }
+ }
+
+ val resourceInstaller by extending {
+ htmlPreprocessors with ResourceInstaller order { after(rootCreator) }
+ }
+
+ val styleAndScriptsAppender by extending {
+ htmlPreprocessors with StyleAndScriptsAppender order { after(rootCreator) }
+ }
+
+ val packageListCreator by extending {
+ htmlPreprocessors providing {
+ PackageListCreator(
+ it,
+ "html",
+ "html"
+ )
+ } order { after(rootCreator) }
+ }
+
+ val sourcesetDependencyAppender by extending {
+ htmlPreprocessors providing ::SourcesetDependencyAppender order { after(rootCreator) }
+ }
+
+ val allModulePageCreators by extending {
+ CoreExtensions.allModulePageCreator providing {
+ MultimodulePageCreator(it)
+ }
+ }
+}
diff --git a/plugins/base/src/main/kotlin/allModulePage/MultimodulePageCreator.kt b/plugins/base/src/main/kotlin/allModulePage/MultimodulePageCreator.kt
new file mode 100644
index 00000000..de2242f2
--- /dev/null
+++ b/plugins/base/src/main/kotlin/allModulePage/MultimodulePageCreator.kt
@@ -0,0 +1,81 @@
+package org.jetbrains.dokka.base.allModulePage
+
+import org.jetbrains.dokka.DokkaConfiguration
+import org.jetbrains.dokka.DokkaConfiguration.DokkaSourceSet
+import org.jetbrains.dokka.DokkaException
+import org.jetbrains.dokka.base.DokkaBase
+import org.jetbrains.dokka.base.resolvers.local.MultimoduleLocationProvider.Companion.MULTIMODULE_PACKAGE_PLACEHOLDER
+import org.jetbrains.dokka.base.transformers.pages.comments.DocTagToContentConverter
+import org.jetbrains.dokka.base.translators.documentables.PageContentBuilder
+import org.jetbrains.dokka.links.DRI
+import org.jetbrains.dokka.model.doc.DocumentationNode
+import org.jetbrains.dokka.model.doc.P
+import org.jetbrains.dokka.pages.*
+import org.jetbrains.dokka.base.parsers.MarkdownParser
+import org.jetbrains.dokka.plugability.DokkaContext
+import org.jetbrains.dokka.plugability.querySingle
+import org.jetbrains.dokka.transformers.pages.PageCreator
+import org.jetbrains.dokka.utilities.DokkaLogger
+import java.io.File
+
+class MultimodulePageCreator(
+ val context: DokkaContext
+) : PageCreator {
+ private val logger: DokkaLogger = context.logger
+
+ override fun invoke(): RootPageNode {
+ val parser = MarkdownParser(logger = logger)
+ val modules = context.configuration.modules
+ modules.forEach(::throwOnMissingModuleDocFile)
+
+ val commentsConverter = context.plugin(DokkaBase::class)?.querySingle { commentsToContentConverter }
+ val signatureProvider = context.plugin(DokkaBase::class)?.querySingle { signatureProvider }
+ if (commentsConverter == null || signatureProvider == null)
+ throw IllegalStateException("Both comments converter and signature provider must not be null")
+
+ val sourceSetData = emptySet<DokkaSourceSet>()
+ val builder = PageContentBuilder(commentsConverter, signatureProvider, context.logger)
+ val contentNode = builder.contentFor(
+ dri = DRI(MULTIMODULE_PACKAGE_PLACEHOLDER),
+ kind = ContentKind.Cover,
+ sourceSets = sourceSetData
+ ) {
+ header(2, "All modules:")
+ table(styles = setOf(MultimoduleTable)) {