diff options
| author | Filip Zybała <fzybala@virtuslab.com> | 2020-07-08 10:11:53 +0200 |
|---|---|---|
| committer | Paweł Marks <Kordyjan@users.noreply.github.com> | 2020-07-13 15:13:01 +0200 |
| commit | 46bfb60f356a861097149f64bf414e732807c522 (patch) | |
| tree | 05ddd63773f481e58c717ffe59d0c553722b9957 /plugins/base/src/main/kotlin/renderers/html | |
| parent | 6377d964819f937bd4a7633488d69edc327542d8 (diff) | |
| download | dokka-46bfb60f356a861097149f64bf414e732807c522.tar.gz dokka-46bfb60f356a861097149f64bf414e732807c522.tar.bz2 dokka-46bfb60f356a861097149f64bf414e732807c522.zip | |
Implemented extension point for tab sorting strategy
Diffstat (limited to 'plugins/base/src/main/kotlin/renderers/html')
| -rw-r--r-- | plugins/base/src/main/kotlin/renderers/html/HtmlRenderer.kt | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/plugins/base/src/main/kotlin/renderers/html/HtmlRenderer.kt b/plugins/base/src/main/kotlin/renderers/html/HtmlRenderer.kt index 595dc8d2..50af53f0 100644 --- a/plugins/base/src/main/kotlin/renderers/html/HtmlRenderer.kt +++ b/plugins/base/src/main/kotlin/renderers/html/HtmlRenderer.kt @@ -9,12 +9,14 @@ import org.jetbrains.dokka.DokkaConfiguration.DokkaSourceSet import org.jetbrains.dokka.Platform import org.jetbrains.dokka.base.DokkaBase import org.jetbrains.dokka.base.renderers.DefaultRenderer +import org.jetbrains.dokka.base.renderers.TabSortingStrategy import org.jetbrains.dokka.links.DRI import org.jetbrains.dokka.model.properties.PropertyContainer import org.jetbrains.dokka.pages.* import org.jetbrains.dokka.plugability.DokkaContext import org.jetbrains.dokka.plugability.plugin import org.jetbrains.dokka.plugability.query +import org.jetbrains.dokka.plugability.querySingle import java.io.File import java.net.URI @@ -26,11 +28,19 @@ open class HtmlRenderer( sourceSet to context.configuration.sourceSets.filter { sourceSet.dependentSourceSets.contains(it.sourceSetID) } }.toMap() - private val pageList = mutableMapOf<String, Pair<String, String>>() override val preprocessors = context.plugin<DokkaBase>().query { htmlPreprocessors } + private val tabSortingStrategy = context.plugin<DokkaBase>().querySingle { tabSortingStrategy } + + private fun <T: ContentNode> sortTabs(strategy: TabSortingStrategy, tabs: Collection<T>) : List<T> { + val sorted = strategy.sort(tabs) + if(sorted.size != tabs.size) + context.logger.warn("Tab sorting strategy has changed number of tabs from ${tabs.size} to ${sorted.size}") + return sorted; + } + override fun FlowContent.wrapGroup( node: ContentGroup, pageContext: ContentPage, @@ -44,7 +54,7 @@ open class HtmlRenderer( val firstLevel = node.children.filterIsInstance<ContentHeader>().flatMap { it.children } .filterIsInstance<ContentText>() - val renderable = firstLevel.union(secondLevel) + val renderable = firstLevel.union(secondLevel).let { sortTabs(tabSortingStrategy, it) } div(classes = "tabs-section") { attributes["tabs-section"] = "tabs-section" |
