Update KDoc

This commit is contained in:
Karlatemp 2020-09-21 12:42:05 +08:00
parent 00781c215a
commit 209bc97b32
No known key found for this signature in database
GPG Key ID: 21FBDDF664FF06F8
3 changed files with 22 additions and 5 deletions

View File

@ -21,7 +21,7 @@ internal object SemVersionInternal {
private val versionSelect = """^[0-9]+(\.[0-9]+)*\.x$""".toRegex()
private val versionMathRange =
"""([\[\(])([0-9]+(\.[0-9]+)+(|[\-+].+))\s*\,\s*([0-9]+(\.[0-9]+)+(|[\-+].+))([\]\)])""".toRegex()
private val versionRule = """^((\>\=)|(\<\=)|(\=)|(\>)|(\<))\s*([0-9]+(\.[0-9]+)+(|[\-+].+))$""".toRegex()
private val versionRule = """^((\>\=)|(\<\=)|(\=)|(\!\=)|(\>)|(\<))\s*([0-9]+(\.[0-9]+)+(|[\-+].+))$""".toRegex()
private val SEM_VERSION_REGEX =
"""^(0|[1-9]\d*)\.(0|[1-9]\d*)(?:\.(0|[1-9]\d*))?(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$""".toRegex()
@ -127,7 +127,7 @@ internal object SemVersionInternal {
}
versionRule.matchEntire(trimmed)?.let { result ->
val operator = result.groupValues[1]
val version1 = SemVersion.invoke(result.groupValues[7])
val version1 = SemVersion.invoke(result.groupValues[8])
return when (operator) {
">=" -> {
object : SemVersion.Requirement {
@ -154,6 +154,11 @@ internal object SemVersionInternal {
override fun test(version: SemVersion): Boolean = version.compareTo(version1) == 0
}
}
"!=" -> {
object : SemVersion.Requirement {
override fun test(version: SemVersion): Boolean = version.compareTo(version1) != 0
}
}
else -> error("operator=$operator, version=$version1")
}
}

View File

@ -113,21 +113,28 @@ internal constructor(
*
* - `1.0.0-M4` 要求 1.0.0-M4 版本, 且只能是 1.0.0-M4 版本
* - `1.x` 要求 1.x 版本
* - `1.0.0 - 1.2.0` 要求 1.0.0 1.2.0 的任意版本, 注意 `-` 两边必须要有空格
* - `[1.0.0, 1.2.0]` `1.0.0 - 1.2.0` 一致
* - `> 1.0.0-RC` 要求 1.0.0-RC 之后的版本, 不能是 1.0.0-RC
* - `>= 1.0.0-RC` 要求 1.0.0-RC 或之后的版本, 可以是 1.0.0-RC
* - `< 1.0.0-RC` 要求 1.0.0-RC 之前的版本, 不能是 1.0.0-RC
* - `<= 1.0.0-RC` 要求 1.0.0-RC 或之前的版本, 可以是 1.0.0-RC
* - `!= 1.0.0-RC` 要求 除了1.0.0-RC 的任何版本
* - `[1.0.0, 1.2.0]`
* - `(1.0.0, 1.2.0]`
* - `[1.0.0, 1.2.0)`
* - `(1.0.0, 1.2.0)` [数学区间](https://baike.baidu.com/item/%E5%8C%BA%E9%97%B4/1273117)
*
* 对于多个规则, 也允许使用 `||` 拼接.
* 对于多个规则, 允许使用逻辑符号 `{}`, `||`, `&&`
* 例如:
* - `1.x || 2.x || 3.0.0`
* - `<= 0.5.3 || >= 1.0.0`
* - `{> 1.0 && < 1.5} || {> 1.8}`
* - `{> 1.0 && < 1.5} || {> 1.8}`
* - `> 1.0.0 && != 1.2.0`
*
* 特别注意:
* - 依赖规则版本号不需要携带版本号元数据, 元数据不参与依赖需求的检查
* - 如果目标版本号携带有先行版本号, 请不要忘记先行版本号
* - 因为 `()` 已经用于数学区间, 使用 `{}` 替代 `()`
*/
@Throws(IllegalArgumentException::class)
@JvmStatic

View File

@ -90,6 +90,11 @@ internal class TestSemVersion {
.assertFalse("0.98774587")
SemVersion.parseRangeRequirement("> 1.0.0")
.assertFalse("1.0.0")
SemVersion.parseRangeRequirement("!= 1.0.0 && != 2.0.0")
.assert("1.2.3").assert("2.1.1")
.assertFalse("1.0").assertFalse("1.0.0")
.assertFalse("2.0").assertFalse("2.0.0")
.assert("2.0.1").assert("1.0.1")
SemVersion.parseRangeRequirement("> 1.0.0 || < 0.9.0")
.assertFalse("1.0.0")