diff options
Diffstat (limited to 'core/src/main')
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 |