in providers/snyk/schema/versionrange.go [55:96]
func parseParenRanges(s string) (vr []versionRange, err error) {
for len(s) > 0 {
var r versionRange
left := strings.IndexAny(s, "([")
right := strings.IndexAny(s, ")]")
if left == -1 || right == -1 || right < left {
return nil, fmt.Errorf("invalid range %q", s)
}
boundaries := strings.Split(s[left+1:right], ",")
if len(boundaries) == 1 {
r.minVerIncl = strings.TrimSpace(boundaries[0])
r.maxVerIncl = r.minVerIncl
vr = append(vr, r)
s = s[right+1:]
continue
}
if len(boundaries) != 2 {
return nil, fmt.Errorf("invalid range %q", s)
}
if s[left] == '(' {
r.minVerExcl = strings.TrimSpace(boundaries[0])
} else {
r.minVerIncl = strings.TrimSpace(boundaries[0])
}
if s[right] == ')' {
r.maxVerExcl = strings.TrimSpace(boundaries[1])
} else {
r.maxVerIncl = strings.TrimSpace(boundaries[1])
}
vr = append(vr, r)
// skip trailing spaces
suffix := s[right+1:]
for _, r := range suffix {
if !unicode.IsSpace(r) {
break
}
right++
}
s = s[right+1:]
}
return vr, nil
}