v2 / vlib / semver / compare.v
41 lines · 35 sloc · 1.01 KB · 757929392e0e7a75fc1272116460981e589737d5
Raw
1module semver
2
3// * Private functions.
4@[inline]
5fn version_satisfies(ver Version, input string) bool {
6 range := parse_range(input) or { return false }
7 return range.satisfies(ver)
8}
9
10fn compare_eq(v1 Version, v2 Version) bool {
11 return v1.major == v2.major && v1.minor == v2.minor && v1.patch == v2.patch
12 && v1.prerelease == v2.prerelease
13}
14
15fn compare_gt(v1 Version, v2 Version) bool {
16 return match true {
17 v1.major < v2.major { false }
18 v1.major > v2.major { true }
19 v1.minor < v2.minor { false }
20 v1.minor > v2.minor { true }
21 else { v1.patch > v2.patch }
22 }
23}
24
25fn compare_lt(v1 Version, v2 Version) bool {
26 return match true {
27 v1.major > v2.major { false }
28 v1.major < v2.major { true }
29 v1.minor > v2.minor { false }
30 v1.minor < v2.minor { true }
31 else { v1.patch < v2.patch }
32 }
33}
34
35fn compare_ge(v1 Version, v2 Version) bool {
36 return if compare_eq(v1, v2) { true } else { compare_gt(v1, v2) }
37}
38
39fn compare_le(v1 Version, v2 Version) bool {
40 return if compare_eq(v1, v2) { true } else { compare_lt(v1, v2) }
41}
42