From 3cb4702a68139788de6e1f7b087ced345f2b71ba Mon Sep 17 00:00:00 2001 From: Błażej Kardyś Date: Fri, 20 Nov 2020 17:23:10 +0100 Subject: Changing how multimodule location provider works and improving gfm link substitution --- .../src/main/kotlin/AllModulesPageGeneration.kt | 43 ++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 plugins/all-modules-page/src/main/kotlin/AllModulesPageGeneration.kt (limited to 'plugins/all-modules-page/src/main/kotlin/AllModulesPageGeneration.kt') diff --git a/plugins/all-modules-page/src/main/kotlin/AllModulesPageGeneration.kt b/plugins/all-modules-page/src/main/kotlin/AllModulesPageGeneration.kt new file mode 100644 index 00000000..5ac854b4 --- /dev/null +++ b/plugins/all-modules-page/src/main/kotlin/AllModulesPageGeneration.kt @@ -0,0 +1,43 @@ +package org.jetbrains.dokka.allModulesPage + +import org.jetbrains.dokka.CoreExtensions +import org.jetbrains.dokka.Timer +import org.jetbrains.dokka.generation.Generation +import org.jetbrains.dokka.pages.RootPageNode +import org.jetbrains.dokka.plugability.DokkaContext +import org.jetbrains.dokka.plugability.plugin +import org.jetbrains.dokka.plugability.query +import org.jetbrains.dokka.plugability.querySingle + +class AllModulesPageGeneration(private val context: DokkaContext) : Generation { + + private val allModulesPagePlugin by lazy { context.plugin() } + + override fun Timer.generate() { + report("Creating all modules page") + val pages = createAllModulesPage() + + report("Transforming pages") + val transformedPages = transformAllModulesPage(pages) + + report("Rendering") + render(transformedPages) + + report("Processing submodules") + processSubmodules() + } + + override val generationName = "index page for project" + + fun createAllModulesPage() = allModulesPagePlugin.querySingle { allModulesPageCreator }.invoke() + + fun transformAllModulesPage(pages: RootPageNode) = + allModulesPagePlugin.query { allModulesPageTransformer }.fold(pages) { acc, t -> t(acc) } + + fun render(transformedPages: RootPageNode) { + context.single(CoreExtensions.renderer).render(transformedPages) + } + + fun processSubmodules() = + allModulesPagePlugin.querySingle { templateProcessor }.process() +} \ No newline at end of file -- cgit