package org.jetbrains.dokka.allModulesPage import org.jetbrains.dokka.CoreExtensions import org.jetbrains.dokka.allModulesPage.templates.* import org.jetbrains.dokka.base.DokkaBase import org.jetbrains.dokka.plugability.DokkaPlugin import org.jetbrains.dokka.transformers.pages.PageCreator import org.jetbrains.dokka.transformers.pages.PageTransformer class AllModulesPagePlugin : DokkaPlugin() { val templateProcessor by extensionPoint() val allModulePageCreator by extensionPoint() val allModulePageTransformer by extensionPoint() val substitutor by extensionPoint() val allModulePageCreators by extending { allModulePageCreator providing ::MultimodulePageCreator } val multimoduleLocationProvider by extending { (plugin().locationProviderFactory providing MultimoduleLocationProvider::Factory override plugin().locationProvider applyIf { modules.size > 1 }) } val allModulesPageGeneration by extending { (CoreExtensions.generation providing ::AllModulesPageGeneration override plugin().singleGeneration) } val defaultTemplateProcessor by extending { templateProcessor providing { DefaultTemplateProcessor(it, DirectiveBasedTemplateProcessingStrategy(it)) } } val pathToRootSubstitutor by extending { substitutor providing ::PathToRootSubstitutor } }