func NewIntSetFromString()

in cmd/csv2cpe/csv2cpe.go [255:290]


func NewIntSetFromString(s ...string) (IntSet, error) {
	var err error
	islice := make([]int, 0, len(s))

	for _, str := range s {
		var start, end int

		p := strings.SplitN(str, "-", 2)
		if len(p) == 2 && p[1] != "" {
			end, err = strconv.Atoi(p[1])
			if err != nil {
				return nil, fmt.Errorf("failed to parse range %q: %v", str, err)
			}
		}

		start, err = strconv.Atoi(p[0])
		if err != nil {
			return nil, fmt.Errorf("failed to parse int: %q: %v", str, err)
		}

		if end == 0 {
			islice = append(islice, start)
			continue
		}

		if end <= start {
			return nil, fmt.Errorf("range end <= start: %q (%d <= %d)", str, end, start)
		}

		for i := start; i <= end; i++ {
			islice = append(islice, i)
		}
	}

	return NewIntSet(islice...), nil
}