43 lines
812 B
Go
43 lines
812 B
Go
package main
|
|
|
|
import (
|
|
"regexp"
|
|
"strconv"
|
|
"strings"
|
|
)
|
|
|
|
var versionSplitRegex = regexp.MustCompile("([0-9]+|[a-z]+)")
|
|
|
|
func splitVer(ver Version) []string {
|
|
return versionSplitRegex.FindAllString(ver.String(), -1)
|
|
}
|
|
|
|
func SimpleCompareVer(ver1 Version, ver2 Version) int {
|
|
ver1_split := splitVer(ver1)
|
|
ver2_split := splitVer(ver2)
|
|
|
|
for i, item := range ver1_split {
|
|
if i >= len(ver2_split) {
|
|
return 1
|
|
}
|
|
item2 := ver2_split[i]
|
|
item_int, err := strconv.ParseInt(item, 10, 32)
|
|
item2_int, err2 := strconv.ParseInt(item2, 10, 32)
|
|
if err == nil && err2 == nil {
|
|
if item_int > item2_int {
|
|
return 1
|
|
}
|
|
if item_int == item2_int {
|
|
continue
|
|
}
|
|
if item_int < item2_int {
|
|
return -1
|
|
}
|
|
}
|
|
if c := strings.Compare(item, ver2_split[i]); c != 0 {
|
|
return c
|
|
}
|
|
}
|
|
return 0
|
|
}
|