generator.go 651 B

1234567891011121314151617181920212223242526272829303132333435
  1. package discovery
  2. import (
  3. "fmt"
  4. "regexp"
  5. "strconv"
  6. )
  7. // Generate takes care of IP generation
  8. func Generate(pattern string) []string {
  9. re, _ := regexp.Compile(`\[(.+):(.+)\]`)
  10. submatch := re.FindStringSubmatch(pattern)
  11. if submatch == nil {
  12. return []string{pattern}
  13. }
  14. from, err := strconv.Atoi(submatch[1])
  15. if err != nil {
  16. return []string{pattern}
  17. }
  18. to, err := strconv.Atoi(submatch[2])
  19. if err != nil {
  20. return []string{pattern}
  21. }
  22. template := re.ReplaceAllString(pattern, "%d")
  23. var result []string
  24. for val := from; val <= to; val++ {
  25. entry := fmt.Sprintf(template, val)
  26. result = append(result, entry)
  27. }
  28. return result
  29. }