diff options
Diffstat (limited to 'vendor/github.com')
-rw-r--r-- | vendor/github.com/mcuadros/go-version/compare.go | 22 | ||||
-rw-r--r-- | vendor/github.com/mcuadros/go-version/group.go | 33 |
2 files changed, 44 insertions, 11 deletions
diff --git a/vendor/github.com/mcuadros/go-version/compare.go b/vendor/github.com/mcuadros/go-version/compare.go index 98e14fa8ec..546f071e57 100644 --- a/vendor/github.com/mcuadros/go-version/compare.go +++ b/vendor/github.com/mcuadros/go-version/compare.go @@ -11,16 +11,18 @@ var regexpDotBeforeDigit = regexp.MustCompile(`([^.\d]+)`) var regexpMultipleDots = regexp.MustCompile(`\.{2,}`) var specialForms = map[string]int{ - "dev": -6, - "alpha": -5, - "a": -5, - "beta": -4, - "b": -4, - "RC": -3, - "rc": -3, - "#": -2, - "p": 1, - "pl": 1, + "SNAPSHOT": -7, + "snapshot": -7, + "dev": -6, + "alpha": -5, + "a": -5, + "beta": -4, + "b": -4, + "RC": -3, + "rc": -3, + "#": -2, + "p": 1, + "pl": 1, } var unknownForm int = -7 diff --git a/vendor/github.com/mcuadros/go-version/group.go b/vendor/github.com/mcuadros/go-version/group.go index b25a30c0c0..02a8eb48f1 100644 --- a/vendor/github.com/mcuadros/go-version/group.go +++ b/vendor/github.com/mcuadros/go-version/group.go @@ -4,6 +4,7 @@ import ( "regexp" "strconv" "strings" + "sync" ) type ConstraintGroup struct { @@ -241,8 +242,38 @@ func (self *ConstraintGroup) parseConstraint(constraint string) []*Constraint { return []*Constraint{{constraint, stabilityModifier}} } +// PCRegMap : PreCompiled Regex Map +type PCRegMap struct { + sync.RWMutex + m map[string]*regexp.Regexp +} + +// MustCompile : to replace regexp.MustCompile in RegFind. +func (p *PCRegMap) MustCompile(pattern string) *regexp.Regexp { + p.RLock() + ret, exist := p.m[pattern] + p.RUnlock() + if exist { + return ret + } + ret = regexp.MustCompile(pattern) + p.Lock() + p.m[pattern] = ret + p.Unlock() + return ret +} + +var ( + regexpCache *PCRegMap +) + +func init() { + regexpCache = new(PCRegMap) + regexpCache.m = make(map[string]*regexp.Regexp) +} + func RegFind(pattern, subject string) []string { - reg := regexp.MustCompile(pattern) + reg := regexpCache.MustCompile(pattern) matched := reg.FindAllStringSubmatch(subject, -1) if matched != nil { |