From 1fd045904e94d68878b3a5f748bf20f7c61a1cf7 Mon Sep 17 00:00:00 2001 From: ilya-g Date: Fri, 17 Feb 2023 16:42:28 +0100 Subject: Consistent alphabetical order of element groups in index and navigation (#2861) * Sort groups of divergent elements by their key first ignoring case, then preserving it * Add tests for sorting groups and navigation --- .../src/main/kotlin/translators/documentables/DefaultPageCreator.kt | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'plugins/base/src/main/kotlin/translators/documentables') diff --git a/plugins/base/src/main/kotlin/translators/documentables/DefaultPageCreator.kt b/plugins/base/src/main/kotlin/translators/documentables/DefaultPageCreator.kt index 25f3c450..6006af5b 100644 --- a/plugins/base/src/main/kotlin/translators/documentables/DefaultPageCreator.kt +++ b/plugins/base/src/main/kotlin/translators/documentables/DefaultPageCreator.kt @@ -9,6 +9,7 @@ import org.jetbrains.dokka.base.transformers.documentables.ClashingDriIdentifier import org.jetbrains.dokka.base.transformers.pages.comments.CommentsToContentConverter import org.jetbrains.dokka.base.transformers.pages.tags.CustomTagContentProvider import org.jetbrains.dokka.base.translators.documentables.PageContentBuilder.DocumentableContentBuilder +import org.jetbrains.dokka.base.utils.canonicalAlphabeticalOrder import org.jetbrains.dokka.links.Callable import org.jetbrains.dokka.links.DRI import org.jetbrains.dokka.model.* @@ -508,6 +509,9 @@ open class DefaultPageCreator( } } + private val groupKeyComparator: Comparator> = + compareBy(nullsFirst(canonicalAlphabeticalOrder)) { it.key } + protected open fun DocumentableContentBuilder.divergentBlock( name: String, collection: Collection, @@ -525,7 +529,7 @@ open class DefaultPageCreator( .groupBy { it.name } // This groupBy should probably use LocationProvider // This hacks displaying actual typealias signatures along classlike ones .mapValues { if (it.value.any { it is DClasslike }) it.value.filter { it !is DTypeAlias } else it.value } - .entries.sortedBy { it.key } + .entries.sortedWith(groupKeyComparator) .forEach { (elementName, elements) -> // This groupBy should probably use LocationProvider val sortedElements = sortDivergentElementsDeterministically(elements) row( -- cgit