aboutsummaryrefslogtreecommitdiff
path: root/plugins/base/src/main/kotlin/renderers/pageId.kt
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/base/src/main/kotlin/renderers/pageId.kt')
-rw-r--r--plugins/base/src/main/kotlin/renderers/pageId.kt11
1 files changed, 10 insertions, 1 deletions
diff --git a/plugins/base/src/main/kotlin/renderers/pageId.kt b/plugins/base/src/main/kotlin/renderers/pageId.kt
index b80121c0..d3a9ed7a 100644
--- a/plugins/base/src/main/kotlin/renderers/pageId.kt
+++ b/plugins/base/src/main/kotlin/renderers/pageId.kt
@@ -11,8 +11,17 @@ internal val ContentPage.pageId: String
internal val NavigationNode.pageId: String
get() = pageId(dri, sourceSets)
+@JvmName("shortenSourceSetsToUrl")
+internal fun Set<DisplaySourceSet>.shortenToUrl() =
+ sortedBy { it.sourceSetIDs.merged.let { it.scopeId + it.sourceSetName } }.joinToString().hashCode()
+
+internal fun DRI.shortenToUrl() = toString()
+
+@JvmName("shortenDrisToUrl")
+internal fun Set<DRI>.shortenToUrl() = sortedBy { it.toString() }.joinToString().hashCode()
+
/**
* Page Id is required to have a sourceSet in order to distinguish between different pages that has same DRI but different sourceSet
* like main functions that are not expect/actual
*/
-private fun pageId(dri: DRI, sourceSets: Set<DisplaySourceSet>): String = "$dri/${sourceSets.hashCode()}" \ No newline at end of file
+private fun pageId(dri: DRI, sourceSets: Set<DisplaySourceSet>): String = "${dri.shortenToUrl()}/${sourceSets.shortenToUrl()}" \ No newline at end of file