url_options.go 613 B

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