仓颉原生版本号对比工具类, 支持版本号对比,版本号验证,版本号排序
介绍
欢迎使用compare-versions-cj, 这是一个版本对比工具类。 仓颉原生版本对比工具类。已适配仓颉0.55.3 版本,无第三方依赖库。
项目特性
API设计参考如下项目:https://www.npmjs.com/package/compare-versions
-
版本对比
-
版本号验证
-
版本号排序
-
版本号范围识别
项目计划
目前已完成代码及单元测试编写
项目架构
函数式工具类,直接使用相关函数即可
源码目录
.
├── README.md
├── LICENSE
├── CHANGELOG
├── cjpm.toml
├── doc
├── feature_api.md
└── readme-image
└── src
├── compare_version.cj
├── compare.cj
├── satisfies.cj
├── util.cj
└── validate.cj
接口说明
主要类和函数接口说明,详见 API
使用说明
通过源码方式引入 compare-versions-cj 依赖
仓颉0.53.4以上版本:在项目的 cjpm.toml 中添加 dependencies 引入 compare-versions-cj 依赖:
[dependencies]
compareVersions = {git = "https://gitcode.com/Cangjie-TPC/compare-versions-cj.git", branch = "main", version = "0.2.0"}
更新依赖,运行cjpm update会自动下载依赖 compareVersions 项目到~/.cjpm目录下
$> cjpm update
功能示例
1 版本对比
如果第一个版本更新,返回1,如果版本相同返回0,如果第二个版本更新返回-1。 下面是测试用例
import compareVersions.compareVersions
compareVersions('11.1.1', '10.0.0') // 1
compareVersions('10.0.0', '10.0.0') // 0
compareVersions('10.0.0', '11.1.1') // -1
2 更容易理解的版本对比
compare 函数是更好理解的比较方法:
import compareVersions.compare
compare('10.1.8', '10.0.4', '>') // true
compare('10.0.1', '10.0.1', '=') // true
compare('10.1.1', '10.2.2', '<') // true
compare('10.1.1', '10.2.2', '<=') // true
compare('10.1.1', '10.2.2', '>=') // false
3 版本号验证
验证版本是否合法,返回Bool:
import compareVersions.validate
validate('1.0.0-rc.1'); // true
validate('1.0-rc.1'); // false
validate('foo'); // false
4 严格的版本号验证
根据 semver.org 的描述,严格验证版本号; 3个整数, 没有通配符, 没有0或者v前缀等:
import compareVersions.validateStrict
validateStrict('1.0.0'); // true
validateStrict('1.0.0-rc.1'); // true
validateStrict('1.0'); // false
validateStrict('1.x'); // false
validateStrict('v1.02'); // false
5 版本号排序
import std.sort.*
import compareVersions.versionComparator
let versions = [
'1.1.9',
'1.1.3',
'1.1.5'
]
versions.sortBy(comparator: versionComparator);
/*
[
'1.1.3',
'1.1.5',
'1.1.9'
]
*/
6 版本号范围判断
import compareVersions.satisfies
satisfies('1.1.0', '^1.0.0'); // return true
satisfies('1.1.0', '~1.0.0'); // return false
约束与限制
纯仓颉工具类
开源协议
MIT License
参与贡献
欢迎给我们提交PR,欢迎给我们提交Issue,欢迎参与任何形式的贡献。