github.com/mattn/go-oci8 v0.0.0-20190320171441-14ba190cf52d // indirect | github.com/mattn/go-oci8 v0.0.0-20190320171441-14ba190cf52d // indirect | ||||
github.com/mattn/go-sqlite3 v1.10.0 | github.com/mattn/go-sqlite3 v1.10.0 | ||||
github.com/matttproud/golang_protobuf_extensions v1.0.1 // indirect | github.com/matttproud/golang_protobuf_extensions v1.0.1 // indirect | ||||
github.com/mcuadros/go-version v0.0.0-20171003094716-88e56e02bea1 | |||||
github.com/mcuadros/go-version v0.0.0-20190308113854-92cdf37c5b75 | |||||
github.com/microcosm-cc/bluemonday v0.0.0-20161012083705-f77f16ffc87a | github.com/microcosm-cc/bluemonday v0.0.0-20161012083705-f77f16ffc87a | ||||
github.com/mschoch/smat v0.0.0-20160514031455-90eadee771ae // indirect | github.com/mschoch/smat v0.0.0-20160514031455-90eadee771ae // indirect | ||||
github.com/msteinert/pam v0.0.0-20151204160544-02ccfbfaf0cc | github.com/msteinert/pam v0.0.0-20151204160544-02ccfbfaf0cc |
github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= | github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= | ||||
github.com/mcuadros/go-version v0.0.0-20171003094716-88e56e02bea1 h1:4yXas1DDHpauOfuyfmAMm+EB+SiqPKEoTdc88XEJHsc= | github.com/mcuadros/go-version v0.0.0-20171003094716-88e56e02bea1 h1:4yXas1DDHpauOfuyfmAMm+EB+SiqPKEoTdc88XEJHsc= | ||||
github.com/mcuadros/go-version v0.0.0-20171003094716-88e56e02bea1/go.mod h1:76rfSfYPWj01Z85hUf/ituArm797mNKcvINh1OlsZKo= | github.com/mcuadros/go-version v0.0.0-20171003094716-88e56e02bea1/go.mod h1:76rfSfYPWj01Z85hUf/ituArm797mNKcvINh1OlsZKo= | ||||
github.com/mcuadros/go-version v0.0.0-20190308113854-92cdf37c5b75 h1:Pijfgr7ZuvX7QIQiEwLdRVr3RoMG+i0SbBO1Qu+7yVk= | |||||
github.com/mcuadros/go-version v0.0.0-20190308113854-92cdf37c5b75/go.mod h1:76rfSfYPWj01Z85hUf/ituArm797mNKcvINh1OlsZKo= | |||||
github.com/microcosm-cc/bluemonday v0.0.0-20161012083705-f77f16ffc87a h1:d18LCO3ctH2kugUqt0pEyKKP8L+IYrocaPqGFilhTKk= | github.com/microcosm-cc/bluemonday v0.0.0-20161012083705-f77f16ffc87a h1:d18LCO3ctH2kugUqt0pEyKKP8L+IYrocaPqGFilhTKk= | ||||
github.com/microcosm-cc/bluemonday v0.0.0-20161012083705-f77f16ffc87a/go.mod h1:hsXNsILzKxV+sX77C5b8FSuKF00vh2OMYv+xgHpAMF4= | github.com/microcosm-cc/bluemonday v0.0.0-20161012083705-f77f16ffc87a/go.mod h1:hsXNsILzKxV+sX77C5b8FSuKF00vh2OMYv+xgHpAMF4= | ||||
github.com/mitchellh/go-homedir v1.0.0 h1:vKb8ShqSby24Yrqr/yDYkuFz8d0WUjys40rvnGC8aR0= | github.com/mitchellh/go-homedir v1.0.0 h1:vKb8ShqSby24Yrqr/yDYkuFz8d0WUjys40rvnGC8aR0= |
var regexpMultipleDots = regexp.MustCompile(`\.{2,}`) | var regexpMultipleDots = regexp.MustCompile(`\.{2,}`) | ||||
var specialForms = map[string]int{ | 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 | var unknownForm int = -7 |
"regexp" | "regexp" | ||||
"strconv" | "strconv" | ||||
"strings" | "strings" | ||||
"sync" | |||||
) | ) | ||||
type ConstraintGroup struct { | type ConstraintGroup struct { | ||||
return []*Constraint{{constraint, stabilityModifier}} | 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 { | func RegFind(pattern, subject string) []string { | ||||
reg := regexp.MustCompile(pattern) | |||||
reg := regexpCache.MustCompile(pattern) | |||||
matched := reg.FindAllStringSubmatch(subject, -1) | matched := reg.FindAllStringSubmatch(subject, -1) | ||||
if matched != nil { | if matched != nil { |
github.com/mattn/go-sqlite3 | github.com/mattn/go-sqlite3 | ||||
# github.com/matttproud/golang_protobuf_extensions v1.0.1 | # github.com/matttproud/golang_protobuf_extensions v1.0.1 | ||||
github.com/matttproud/golang_protobuf_extensions/pbutil | github.com/matttproud/golang_protobuf_extensions/pbutil | ||||
# github.com/mcuadros/go-version v0.0.0-20171003094716-88e56e02bea1 | |||||
# github.com/mcuadros/go-version v0.0.0-20190308113854-92cdf37c5b75 | |||||
github.com/mcuadros/go-version | github.com/mcuadros/go-version | ||||
# github.com/microcosm-cc/bluemonday v0.0.0-20161012083705-f77f16ffc87a | # github.com/microcosm-cc/bluemonday v0.0.0-20161012083705-f77f16ffc87a | ||||
github.com/microcosm-cc/bluemonday | github.com/microcosm-cc/bluemonday |