refactor php7
This commit is contained in:
61
internal/version/version.go
Normal file
61
internal/version/version.go
Normal file
@@ -0,0 +1,61 @@
|
||||
package version
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"strconv"
|
||||
"strings"
|
||||
)
|
||||
|
||||
type version struct {
|
||||
major int
|
||||
minor int
|
||||
}
|
||||
|
||||
func Compare(a string, b string) (int, error) {
|
||||
first, err := parse(a)
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
|
||||
second, err := parse(b)
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
|
||||
if first.major < second.major {
|
||||
return -1, nil
|
||||
}
|
||||
|
||||
if first.major > second.major {
|
||||
return 1, nil
|
||||
}
|
||||
|
||||
if first.minor < second.minor {
|
||||
return -1, nil
|
||||
}
|
||||
|
||||
if first.minor > second.minor {
|
||||
return 1, nil
|
||||
}
|
||||
|
||||
return 0, nil
|
||||
}
|
||||
|
||||
func parse(v string) (version, error) {
|
||||
parts := strings.Split(v, ".")
|
||||
if len(parts) != 2 {
|
||||
return version{}, errors.New("version must contain major and minor parts")
|
||||
}
|
||||
|
||||
major, err := strconv.Atoi(parts[0])
|
||||
if err != nil {
|
||||
return version{}, err
|
||||
}
|
||||
|
||||
minor, err := strconv.Atoi(parts[1])
|
||||
if err != nil {
|
||||
return version{}, err
|
||||
}
|
||||
|
||||
return version{major, minor}, nil
|
||||
}
|
||||
Reference in New Issue
Block a user