code: func ParseRange(value string) (*Range, error) {
  	value = strings.TrimSpace(value)
  	b := &rangeBuilder{}
  	if value == "" {
  		return b.Range()
  	}
  	parts := strings.Split(value, "-")
  	switch len(parts) {
  	case 1:
  		num, err := parseInt(parts[0])
  		return b.from(num, err).to(num, err).Range()
  	case 2:
  		if parts[0] != "" {
  			b.from(parseInt(parts[0]))
  		}
  		if parts[1] != "" {
  			b.to(parseInt(parts[1]))
  		}
  		return b.Range()
  	default:
  		return nil, &ErrParseRange{}
  	}
  }
docs: // ParseRange creates a Range from a given string