in providers/snyk/schema/versionrange.go [100:137]
func parseCmpRanges(s string) (vr []versionRange, err error) {
re := regexp.MustCompile(`([<>](:?=)?)\s*(\S+)`)
ss := strings.Split(s, "||")
for _, rs := range ss {
var r versionRange
if rs == "" {
continue
}
rs = strings.TrimSpace(rs)
// first, check if it is just an equality check
if rs[0] == '=' {
r.maxVerIncl = strings.TrimSpace(rs[1:])
r.minVerIncl = r.maxVerIncl
vr = append(vr, r)
continue
}
// then process the range
matches := re.FindAllString(strings.TrimSpace(rs), -1)
for _, match := range matches {
switch match[0] {
case '<':
if match[1] == '=' {
r.maxVerIncl = strings.TrimSpace(match[2:])
} else {
r.maxVerExcl = strings.TrimSpace(match[1:])
}
case '>':
if match[1] == '=' {
r.minVerIncl = strings.TrimSpace(match[2:])
} else {
r.minVerExcl = strings.TrimSpace(match[1:])
}
}
}
vr = append(vr, r)
}
return vr, nil
}