forked from forgejo/forgejo
update github.com/mcuadros/go-version to v0.0.0-20190308113854-92cdf37c5b75 (#6815)
This commit is contained in:
parent
eb8632b20b
commit
5be1780045
5 changed files with 48 additions and 13 deletions
33
vendor/github.com/mcuadros/go-version/group.go
generated
vendored
33
vendor/github.com/mcuadros/go-version/group.go
generated
vendored
|
@ -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 {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue