url_options.go 566 B

123456789101112131415161718192021222324252627282930313233343536
  1. package options
  2. import "strings"
  3. type urlOption struct {
  4. Name string
  5. Args []string
  6. }
  7. type urlOptions []urlOption
  8. func parseURLOptions(opts []string) (urlOptions, []string) {
  9. parsed := make(urlOptions, 0, len(opts))
  10. urlStart := len(opts) + 1
  11. for i, opt := range opts {
  12. args := strings.Split(opt, ":")
  13. if len(args) == 1 {
  14. urlStart = i
  15. break
  16. }
  17. parsed = append(parsed, urlOption{Name: args[0], Args: args[1:]})
  18. }
  19. var rest []string
  20. if urlStart < len(opts) {
  21. rest = opts[urlStart:]
  22. } else {
  23. rest = []string{}
  24. }
  25. return parsed, rest
  26. }