Thanks to visit codestin.com
Credit goes to gitcode.com

compare-versions-cj:仓颉原生版本对比工具,支持验证、排序与范围识别

仓颉原生版本号对比工具类, 支持版本号对比,版本号验证,版本号排序

分支2Tags0

compare-versions-cj

介绍

欢迎使用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,欢迎参与任何形式的贡献。

项目介绍

仓颉原生版本号对比工具类, 支持版本号对比,版本号验证,版本号排序

定制我的领域