v2 / vlib / semver / util.v
55 lines · 49 sloc · 934 bytes · 8e35f4d9848f7ad35d857a187dddbfd2eca5e19d
Raw
1module semver
2
3// * Private functions.
4@[inline]
5fn is_version_valid(input string) bool {
6 raw_ver := parse(input)
7 return raw_ver.is_valid()
8}
9
10@[inline]
11fn coerce_version(input string) !Version {
12 raw_ver := parse(input)
13 return raw_ver.coerce() or { return error('Invalid version for input "${input}"') }
14}
15
16@[inline]
17fn increment_version(ver Version, typ Increment) Version {
18 mut major := ver.major
19 mut minor := ver.minor
20 mut patch := ver.patch
21 match typ {
22 .major {
23 major++
24 minor = 0
25 patch = 0
26 }
27 .minor {
28 minor++
29 patch = 0
30 }
31 .patch {
32 patch++
33 }
34 }
35
36 return Version{major, minor, patch, ver.prerelease, ver.metadata}
37}
38
39fn is_valid_string(input string) bool {
40 for c in input {
41 if !(c.is_letter() || c.is_digit() || c == `.` || c == `-`) {
42 return false
43 }
44 }
45 return true
46}
47
48fn is_valid_number(input string) bool {
49 for c in input {
50 if !c.is_digit() {
51 return false
52 }
53 }
54 return true
55}
56