public fun compare()

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
                }
            }