semver: use operator overloading (#19935)

This commit is contained in:
Swastik Baranwal 2023-11-19 20:20:12 +05:30 committed by GitHub
parent 4b347a8881
commit 7e280a4b61
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 43 additions and 28 deletions

View file

@ -48,11 +48,11 @@ fn (set ComparatorSet) satisfies(ver Version) bool {
fn (c Comparator) satisfies(ver Version) bool {
return match c.op {
.gt { ver.gt(c.ver) }
.lt { ver.lt(c.ver) }
.ge { ver.ge(c.ver) }
.le { ver.le(c.ver) }
.eq { ver.eq(c.ver) }
.gt { ver > c.ver }
.lt { ver < c.ver }
.ge { ver >= c.ver }
.le { ver <= c.ver }
.eq { ver == c.ver }
}
}

View file

@ -70,26 +70,41 @@ pub fn (ver Version) satisfies(input string) bool {
}
// eq returns `true` if `v1` is equal to `v2`.
@[deprecated: 'use v1 == v2 instead']
pub fn (v1 Version) eq(v2 Version) bool {
return compare_eq(v1, v2)
}
// == checks if `v1` is equal to `v2`
pub fn (v1 Version) == (v2 Version) bool {
return compare_eq(v1, v2)
}
// gt returns `true` if `v1` is greater than `v2`.
@[deprecated: 'use v1 > v2 instead']
pub fn (v1 Version) gt(v2 Version) bool {
return compare_gt(v1, v2)
}
// < checks if `v1` is less than `v2`.
pub fn (v1 Version) < (v2 Version) bool {
return compare_lt(v1, v2)
}
// lt returns `true` if `v1` is less than `v2`.
@[deprecated: 'use v1 < v2 instead']
pub fn (v1 Version) lt(v2 Version) bool {
return compare_lt(v1, v2)
}
// ge returns `true` if `v1` is greater than or equal to `v2`.
@[deprecated: 'use v1 >= v2 instead']
pub fn (v1 Version) ge(v2 Version) bool {
return compare_ge(v1, v2)
}
// le returns `true` if `v1` is less than or equal to `v2`.
// le returns `true` if `v1` is less than or equal to `v2`
@[deprecated: 'use v1 <= v2 instead']
pub fn (v1 Version) le(v2 Version) bool {
return compare_le(v1, v2)
}

View file

@ -118,26 +118,26 @@ fn test_compare() {
patch := semver.build(1, 0, 1)
minor := semver.build(1, 2, 3)
major := semver.build(2, 0, 0)
assert first.le(first)
assert first.ge(first)
assert !first.lt(first)
assert !first.gt(first)
assert patch.ge(first)
assert first.le(patch)
assert !first.ge(patch)
assert !patch.le(first)
assert patch.gt(first)
assert first.lt(patch)
assert !first.gt(patch)
assert !patch.lt(first)
assert minor.gt(patch)
assert patch.lt(minor)
assert !patch.gt(minor)
assert !minor.lt(patch)
assert major.gt(minor)
assert minor.lt(major)
assert !minor.gt(major)
assert !major.lt(minor)
assert first <= first
assert first >= first
assert !(first < first)
assert !(first > first)
assert patch > first
assert first <= patch
assert !(first >= patch)
assert !(patch <= first)
assert patch > first
assert first < patch
assert !(first > patch)
assert !(patch < first)
assert minor > patch
assert patch < minor
assert !(patch > minor)
assert !(minor < patch)
assert major > minor
assert minor < major
assert !(minor > major)
assert !(major < minor)
}
fn test_satisfies() {

View file

@ -162,13 +162,13 @@ fn (mut pc PkgConfig) resolve(pkgname string) !string {
pub fn atleast(v string) bool {
v0 := semver.from(pkgconfig.version) or { return false }
v1 := semver.from(v) or { return false }
return v0.gt(v1)
return v0 > v1
}
pub fn (mut pc PkgConfig) atleast(v string) bool {
v0 := semver.from(pc.version) or { return false }
v1 := semver.from(v) or { return false }
return v0.gt(v1)
return v0 > v1
}
pub fn (mut pc PkgConfig) extend(pcdep &PkgConfig) !string {