From c4567d5a0e355a016b645352a993912694e55c21 Mon Sep 17 00:00:00 2001 From: Ignat Beresnev Date: Mon, 9 May 2022 18:37:04 +0200 Subject: Refactor to utilize Comparators instead of String keys (#2489) * Refactor to utilize Comparators instead of String keys --- .../dokka/javadoc/pages/htmlPreprocessors.kt | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) (limited to 'plugins/javadoc/src/main/kotlin') diff --git a/plugins/javadoc/src/main/kotlin/org/jetbrains/dokka/javadoc/pages/htmlPreprocessors.kt b/plugins/javadoc/src/main/kotlin/org/jetbrains/dokka/javadoc/pages/htmlPreprocessors.kt index 4438e7e9..39e2525e 100644 --- a/plugins/javadoc/src/main/kotlin/org/jetbrains/dokka/javadoc/pages/htmlPreprocessors.kt +++ b/plugins/javadoc/src/main/kotlin/org/jetbrains/dokka/javadoc/pages/htmlPreprocessors.kt @@ -4,6 +4,7 @@ import org.jetbrains.dokka.base.renderers.sourceSets import org.jetbrains.dokka.base.transformers.documentables.deprecatedAnnotation import org.jetbrains.dokka.base.transformers.documentables.isDeprecated import org.jetbrains.dokka.base.transformers.documentables.isException +import org.jetbrains.dokka.links.DRI import org.jetbrains.dokka.model.BooleanValue import org.jetbrains.dokka.model.Documentable import org.jetbrains.dokka.pages.* @@ -91,9 +92,7 @@ object IndexGenerator : PageTransformer { val keys = elements.keys.sortedBy { it } val sortedElements = elements.entries.sortedBy { (a, _) -> a } - val indexNodeComparator = compareBy { it.getId().toLowerCase() } - .thenBy { it.getFullComparatorKey() } - + val indexNodeComparator = getIndexNodeComparator() val indexPages = sortedElements.mapIndexed { idx, (_, set) -> IndexPage( id = idx + 1, @@ -105,15 +104,14 @@ object IndexGenerator : PageTransformer { return input.modified(children = input.children + indexPages) } - private fun NavigableJavadocNode.getFullComparatorKey(): String { - return getDRI().let { dri -> - val packageName = dri.packageName.orEmpty() - val className = dri.classNames.orEmpty() - val callableName = dri.callable?.name.orEmpty() - val parameters = dri.callable?.signature().orEmpty() + private fun getIndexNodeComparator(): Comparator { + val driComparator = compareBy { it.packageName } + .thenBy { it.classNames } + .thenBy { it.callable?.name.orEmpty() } + .thenBy { it.callable?.signature().orEmpty() } - "$packageName/$className/$callableName/$parameters" - } + return compareBy { it.getId().toLowerCase() } + .thenBy(driComparator) { it.getDRI() } } } -- cgit