| package version |
| |
| import ( |
| "regexp" |
| "strings" |
| ) |
| |
| const ( |
| Development = iota |
| Alpha |
| Beta |
| RC |
| Stable |
| ) |
| |
| func expandStability(stability string) string { |
| stability = strings.ToLower(stability) |
| |
| switch stability { |
| case "a": |
| return "alpha" |
| case "b": |
| return "beta" |
| case "p": |
| return "patch" |
| case "pl": |
| return "patch" |
| case "rc": |
| return "RC" |
| } |
| |
| return stability |
| } |
| |
| func parseStability(version string) string { |
| version = regexp.MustCompile(`(?i)#.+$`).ReplaceAllString(version, " ") |
| version = strings.ToLower(version) |
| |
| if strings.HasPrefix(version, "dev-") || strings.HasSuffix(version, "-dev") { |
| return "dev" |
| } |
| |
| result := RegFind(`(?i)^v?(\d{1,3})(\.\d+)?(\.\d+)?(\.\d+)?`+modifierRegex+`$`, version) |
| if result != nil { |
| if len(result) > 3 { |
| return "dev" |
| } |
| } |
| |
| if result[1] != "" { |
| if "beta" == result[1] || "b" == result[1] { |
| return "beta" |
| } |
| if "alpha" == result[1] || "a" == result[1] { |
| return "alpha" |
| } |
| if "rc" == result[1] { |
| return "RC" |
| } |
| } |
| |
| return "stable" |
| } |
| |
| func GetStability(version string) int { |
| result := RegFind(`(?i)(stable|RC|beta|alpha|dev)`, Normalize(version)) |
| if len(result) == 0 { |
| return Stable |
| } |
| |
| switch result[1] { |
| case "dev": |
| return Development |
| case "alpha": |
| return Alpha |
| case "beta": |
| return Beta |
| case "RC": |
| return RC |
| } |
| |
| return Stable |
| } |