| 1 | module semver |
| 2 | |
| 3 | // * Private functions. |
| 4 | @[inline] |
| 5 | fn version_satisfies(ver Version, input string) bool { |
| 6 | range := parse_range(input) or { return false } |
| 7 | return range.satisfies(ver) |
| 8 | } |
| 9 | |
| 10 | fn 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 | |
| 15 | fn 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 | |
| 25 | fn 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 | |
| 35 | fn compare_ge(v1 Version, v2 Version) bool { |
| 36 | return if compare_eq(v1, v2) { true } else { compare_gt(v1, v2) } |
| 37 | } |
| 38 | |
| 39 | fn compare_le(v1 Version, v2 Version) bool { |
| 40 | return if compare_eq(v1, v2) { true } else { compare_lt(v1, v2) } |
| 41 | } |
| 42 | |