in version-utils/src/commonMain/kotlin/org/jetbrains/packagesearch/packageversionutils/normalization/VersionComparatorUtil.kt [24:43]
public fun compare(
v1: String,
v2: String,
tokenPriorityProvider: (String) -> Int = DEFAULT_TOKEN_PRIORITY_PROVIDER,
): Int =
v1.splitVersionString()
.zipWithValueOrNull(v2.splitVersionString())
.map { (e1, e2) ->
if (e1 == null) return@map 1
if (e2 == null) return@map -1
val t1 = VersionTokenType.lookup(e1)
val res = tokenPriorityProvider(e1) - tokenPriorityProvider(e2)
when {
res.sign != 0 -> res
t1 == VersionTokenType.WORD -> e1.compareTo(e2)
t1 == VersionTokenType.DIGITS -> compareNumbers(e1, e2)
else -> 0
}
}