aboutsummaryrefslogtreecommitdiff
path: root/core/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'core/src/main')
-rw-r--r--core/src/main/kotlin/plugability/DefaultExtensions.kt3
-rw-r--r--core/src/main/kotlin/renderers/html/htmlPreprocessors.kt10
-rw-r--r--core/src/main/kotlin/transformers/pages/DefaultPageMergerStrategy.kt31
-rw-r--r--core/src/main/kotlin/transformers/pages/DefaultPageNodeMerger.kt2
-rw-r--r--core/src/main/kotlin/transformers/pages/PageMergerStrategy.kt4
-rw-r--r--core/src/main/kotlin/transformers/pages/PageNodeTransformer.kt4
-rw-r--r--core/src/main/kotlin/transformers/pages/SameNamePageMergerStrategy.kt30
7 files changed, 48 insertions, 36 deletions
diff --git a/core/src/main/kotlin/plugability/DefaultExtensions.kt b/core/src/main/kotlin/plugability/DefaultExtensions.kt
index 3f630ee3..28753cc6 100644
--- a/core/src/main/kotlin/plugability/DefaultExtensions.kt
+++ b/core/src/main/kotlin/plugability/DefaultExtensions.kt
@@ -10,6 +10,7 @@ import org.jetbrains.dokka.transformers.descriptors.DefaultDescriptorToDocumenta
import org.jetbrains.dokka.transformers.documentation.DefaultDocumentationNodeMerger
import org.jetbrains.dokka.transformers.documentation.DefaultDocumentationToPageTranslator
import org.jetbrains.dokka.transformers.pages.DefaultPageMergerStrategy
+import org.jetbrains.dokka.transformers.pages.SameNamePageMergerStrategy
import org.jetbrains.dokka.transformers.psi.DefaultPsiToDocumentationTranslator
import org.jetbrains.dokka.transformers.pages.DefaultPageNodeMerger
@@ -37,7 +38,7 @@ internal object DefaultExtensions {
CoreExtensions.renderer -> renderer.get(fullContext)
CoreExtensions.locationProviderFactory -> providerFactory.get(fullContext)
CoreExtensions.outputWriter -> outputWriter.get(fullContext)
- CoreExtensions.pageMergerStrategy -> DefaultPageMergerStrategy
+ CoreExtensions.pageMergerStrategy -> DefaultPageMergerStrategy(fullContext.logger)
else -> null
}.let { listOfNotNull( it ) as List<T> }
} \ No newline at end of file
diff --git a/core/src/main/kotlin/renderers/html/htmlPreprocessors.kt b/core/src/main/kotlin/renderers/html/htmlPreprocessors.kt
index 7ce6d298..4ee67448 100644
--- a/core/src/main/kotlin/renderers/html/htmlPreprocessors.kt
+++ b/core/src/main/kotlin/renderers/html/htmlPreprocessors.kt
@@ -8,12 +8,12 @@ import org.jetbrains.dokka.pages.*
import org.jetbrains.dokka.renderers.platforms
import org.jetbrains.dokka.transformers.pages.PageNodeTransformer
-object RootCreator : PageNodeTransformer() {
+object RootCreator : PageNodeTransformer {
override fun invoke(input: RootPageNode) =
RendererSpecificRootPage("", listOf(input), RenderingStrategy.DoNothing)
}
-object SearchPageInstaller : PageNodeTransformer() {
+object SearchPageInstaller : PageNodeTransformer {
override fun invoke(input: RootPageNode) = input.modified(children = input.children + searchPage)
private val searchPage = RendererSpecificResourcePage(
@@ -34,7 +34,7 @@ object SearchPageInstaller : PageNodeTransformer() {
})
}
-object NavigationPageInstaller : PageNodeTransformer() {
+object NavigationPageInstaller : PageNodeTransformer {
override fun invoke(input: RootPageNode) = input.modified(
children = input.children + NavigationPage(
input.children.filterIsInstance<ContentPage>().single().let(::visit)
@@ -48,7 +48,7 @@ object NavigationPageInstaller : PageNodeTransformer() {
page.children.filterIsInstance<ContentPage>().map { visit(it) })
}
-object ResourceInstaller : PageNodeTransformer() {
+object ResourceInstaller : PageNodeTransformer {
override fun invoke(input: RootPageNode) = input.modified(children = input.children + resourcePages)
private val resourcePages = listOf("styles", "scripts", "images").map {
@@ -56,7 +56,7 @@ object ResourceInstaller : PageNodeTransformer() {
}
}
-object StyleAndScriptsAppender : PageNodeTransformer() {
+object StyleAndScriptsAppender : PageNodeTransformer {
override fun invoke(input: RootPageNode) = input.transformContentPagesTree {
it.modified(
embeddedResources = it.embeddedResources + listOf(
diff --git a/core/src/main/kotlin/transformers/pages/DefaultPageMergerStrategy.kt b/core/src/main/kotlin/transformers/pages/DefaultPageMergerStrategy.kt
index 81da71ce..66562d8b 100644
--- a/core/src/main/kotlin/transformers/pages/DefaultPageMergerStrategy.kt
+++ b/core/src/main/kotlin/transformers/pages/DefaultPageMergerStrategy.kt
@@ -1,30 +1,11 @@
package org.jetbrains.dokka.transformers.pages
-import org.jetbrains.dokka.pages.*
+import org.jetbrains.dokka.pages.PageNode
+import org.jetbrains.dokka.utilities.DokkaLogger
-object DefaultPageMergerStrategy : PageMergerStrategy() {
- override fun tryMerge(pages: List<PageNode>): List<PageNode> = listOf(pages.mergePageNodes())
-
- private fun List<PageNode>.mergePageNodes(): ContentPage {
- val name = first().name
- val resChildren = this.flatMap { it.children }.distinct()
- val contentChildren = this.filterIsInstance<ContentPage>()
- val dri = contentChildren.flatMap { it.dri }.toSet()
- val dci = DCI(
- dri = dri,
- kind = contentChildren.first().content.dci.kind
- )
- return contentChildren.first()
- .modified(
- dri = dri,
- name = name,
- children = resChildren,
- content = asGroup(dci, contentChildren.map { it.content })
- )
- }
-
- fun asGroup(dci: DCI, nodes: List<ContentNode>): ContentGroup {
- val n = nodes.first()
- return ContentGroup(nodes, dci, n.platforms, n.style, n.extras)
+class DefaultPageMergerStrategy(val logger: DokkaLogger) : PageMergerStrategy {
+ override fun tryMerge(pages: List<PageNode>): List<PageNode> {
+ if (pages.size != 1) logger.warn("Expected 1 page, but got ${pages.size}")
+ return listOf(pages.first())
}
} \ No newline at end of file
diff --git a/core/src/main/kotlin/transformers/pages/DefaultPageNodeMerger.kt b/core/src/main/kotlin/transformers/pages/DefaultPageNodeMerger.kt
index 72e491cf..bdfe393e 100644
--- a/core/src/main/kotlin/transformers/pages/DefaultPageNodeMerger.kt
+++ b/core/src/main/kotlin/transformers/pages/DefaultPageNodeMerger.kt
@@ -5,7 +5,7 @@ import org.jetbrains.dokka.pages.PageNode
import org.jetbrains.dokka.pages.RootPageNode
import org.jetbrains.dokka.plugability.DokkaContext
-class DefaultPageNodeMerger(val context: DokkaContext) : PageNodeTransformer(context) {
+class DefaultPageNodeMerger(val context: DokkaContext) : PageNodeTransformer {
override fun invoke(input: RootPageNode): RootPageNode =
input.modified(children = input.children.map { it.mergeChildren() })
diff --git a/core/src/main/kotlin/transformers/pages/PageMergerStrategy.kt b/core/src/main/kotlin/transformers/pages/PageMergerStrategy.kt
index 37dc5a6a..8eb526b3 100644
--- a/core/src/main/kotlin/transformers/pages/PageMergerStrategy.kt
+++ b/core/src/main/kotlin/transformers/pages/PageMergerStrategy.kt
@@ -2,8 +2,8 @@ package org.jetbrains.dokka.transformers.pages
import org.jetbrains.dokka.pages.PageNode
-abstract class PageMergerStrategy {
+interface PageMergerStrategy {
- abstract fun tryMerge(pages: List<PageNode>): List<PageNode>
+ fun tryMerge(pages: List<PageNode>): List<PageNode>
} \ No newline at end of file
diff --git a/core/src/main/kotlin/transformers/pages/PageNodeTransformer.kt b/core/src/main/kotlin/transformers/pages/PageNodeTransformer.kt
index ebf53d30..45357060 100644
--- a/core/src/main/kotlin/transformers/pages/PageNodeTransformer.kt
+++ b/core/src/main/kotlin/transformers/pages/PageNodeTransformer.kt
@@ -4,6 +4,6 @@ import org.jetbrains.dokka.pages.ModulePageNode
import org.jetbrains.dokka.pages.RootPageNode
import org.jetbrains.dokka.plugability.DokkaContext
-abstract class PageNodeTransformer(context: DokkaContext? = null) {
- abstract operator fun invoke(input: RootPageNode): RootPageNode
+interface PageNodeTransformer {
+ operator fun invoke(input: RootPageNode): RootPageNode
} \ No newline at end of file
diff --git a/core/src/main/kotlin/transformers/pages/SameNamePageMergerStrategy.kt b/core/src/main/kotlin/transformers/pages/SameNamePageMergerStrategy.kt
new file mode 100644
index 00000000..5b0e8794
--- /dev/null
+++ b/core/src/main/kotlin/transformers/pages/SameNamePageMergerStrategy.kt
@@ -0,0 +1,30 @@
+package org.jetbrains.dokka.transformers.pages
+
+import org.jetbrains.dokka.pages.*
+
+object SameNamePageMergerStrategy : PageMergerStrategy {
+ override fun tryMerge(pages: List<PageNode>): List<PageNode> = listOf(pages.mergePageNodes())
+
+ private fun List<PageNode>.mergePageNodes(): ContentPage {
+ val name = first().name
+ val resChildren = this.flatMap { it.children }.distinct()
+ val contentChildren = this.filterIsInstance<ContentPage>()
+ val dri = contentChildren.flatMap { it.dri }.toSet()
+ val dci = DCI(
+ dri = dri,
+ kind = contentChildren.first().content.dci.kind
+ )
+ return contentChildren.first()
+ .modified(
+ dri = dri,
+ name = name,
+ children = resChildren,
+ content = asGroup(dci, contentChildren.map { it.content })
+ )
+ }
+
+ fun asGroup(dci: DCI, nodes: List<ContentNode>): ContentGroup {
+ val n = nodes.first()
+ return ContentGroup(nodes, dci, n.platforms, n.style, n.extras)
+ }
+} \ No newline at end of file