diff options
author | Ignat Beresnev <ignat.beresnev@jetbrains.com> | 2022-05-09 18:37:04 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-05-09 18:37:04 +0200 |
commit | c4567d5a0e355a016b645352a993912694e55c21 (patch) | |
tree | 0e3c8b16160a9f4b6c962db5036c856495ca8dec | |
parent | 12bf21bc0814b0b85655e957ce9f3a99ef389785 (diff) | |
download | dokka-c4567d5a0e355a016b645352a993912694e55c21.tar.gz dokka-c4567d5a0e355a016b645352a993912694e55c21.tar.bz2 dokka-c4567d5a0e355a016b645352a993912694e55c21.zip |
Refactor to utilize Comparators instead of String keys (#2489)
* Refactor to utilize Comparators instead of String keys
-rw-r--r-- | plugins/javadoc/src/main/kotlin/org/jetbrains/dokka/javadoc/pages/htmlPreprocessors.kt | 20 |
1 files changed, 9 insertions, 11 deletions
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<NavigableJavadocNode> { 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<NavigableJavadocNode> { + val driComparator = compareBy<DRI> { it.packageName } + .thenBy { it.classNames } + .thenBy { it.callable?.name.orEmpty() } + .thenBy { it.callable?.signature().orEmpty() } - "$packageName/$className/$callableName/$parameters" - } + return compareBy<NavigableJavadocNode> { it.getId().toLowerCase() } + .thenBy(driComparator) { it.getDRI() } } } |