aboutsummaryrefslogtreecommitdiff
path: root/plugins/base/src/main/kotlin/renderers/html
diff options
context:
space:
mode:
authorFilip Zybała <fzybala@virtuslab.com>2020-07-08 10:11:53 +0200
committerPaweł Marks <Kordyjan@users.noreply.github.com>2020-07-13 15:13:01 +0200
commit46bfb60f356a861097149f64bf414e732807c522 (patch)
tree05ddd63773f481e58c717ffe59d0c553722b9957 /plugins/base/src/main/kotlin/renderers/html
parent6377d964819f937bd4a7633488d69edc327542d8 (diff)
downloaddokka-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.kt14
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"