Browse Source

Remove unnecessary constants and range checks

Benedikt Lang 11 years ago
parent
commit
907ae8488a
1 changed files with 27 additions and 38 deletions
  1. +27
    -38
      semver.go

+ 27
- 38
semver.go View File

@ -11,9 +11,6 @@ const (
numbers string = "0123456789" numbers string = "0123456789"
alphas = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-" alphas = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-"
alphanum = alphas + numbers alphanum = alphas + numbers
dot = "."
hyphen = "-"
plus = "+"
) )
// Latest fully supported spec version // Latest fully supported spec version
@ -171,27 +168,23 @@ func (v Version) Compare(o Version) int {
func (v Version) Validate() error { func (v Version) Validate() error {
// Major, Minor, Patch already validated using uint64 // Major, Minor, Patch already validated using uint64
if len(v.Pre) > 0 {
for _, pre := range v.Pre {
if !pre.IsNum { //Numeric prerelease versions already uint64
if len(pre.VersionStr) == 0 {
return fmt.Errorf("Prerelease can not be empty %q", pre.VersionStr)
}
if !containsOnly(pre.VersionStr, alphanum) {
return fmt.Errorf("Invalid character(s) found in prerelease %q", pre.VersionStr)
}
for _, pre := range v.Pre {
if !pre.IsNum { //Numeric prerelease versions already uint64
if len(pre.VersionStr) == 0 {
return fmt.Errorf("Prerelease can not be empty %q", pre.VersionStr)
}
if !containsOnly(pre.VersionStr, alphanum) {
return fmt.Errorf("Invalid character(s) found in prerelease %q", pre.VersionStr)
} }
} }
} }
if len(v.Build) > 0 {
for _, build := range v.Build {
if len(build) == 0 {
return fmt.Errorf("Build meta data can not be empty %q", build)
}
if !containsOnly(build, alphanum) {
return fmt.Errorf("Invalid character(s) found in build meta data %q", build)
}
for _, build := range v.Build {
if len(build) == 0 {
return fmt.Errorf("Build meta data can not be empty %q", build)
}
if !containsOnly(build, alphanum) {
return fmt.Errorf("Invalid character(s) found in build meta data %q", build)
} }
} }
@ -269,28 +262,24 @@ func Parse(s string) (Version, error) {
v.Patch = patch v.Patch = patch
// There are PreRelease versions
if len(prerelease) > 0 {
for _, prstr := range prerelease {
parsedPR, err := NewPRVersion(prstr)
if err != nil {
return Version{}, err
}
v.Pre = append(v.Pre, parsedPR)
// Prerelease
for _, prstr := range prerelease {
parsedPR, err := NewPRVersion(prstr)
if err != nil {
return Version{}, err
} }
v.Pre = append(v.Pre, parsedPR)
} }
// There is build meta data
if len(build) > 0 {
for _, str := range build {
if len(str) == 0 {
return Version{}, errors.New("Build meta data is empty")
}
if !containsOnly(str, alphanum) {
return Version{}, fmt.Errorf("Invalid character(s) found in build meta data %q", str)
}
v.Build = append(v.Build, str)
// Build meta data
for _, str := range build {
if len(str) == 0 {
return Version{}, errors.New("Build meta data is empty")
}
if !containsOnly(str, alphanum) {
return Version{}, fmt.Errorf("Invalid character(s) found in build meta data %q", str)
} }
v.Build = append(v.Build, str)
} }
return v, nil return v, nil


Loading…
Cancel
Save