autoupdate/simple_comparison.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
}