You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

args.go 1.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. // Copyright (c) 2016-2017 Daniel Oaks <daniel@danieloaks.net>
  2. // released under the MIT license
  3. package utils
  4. import "strings"
  5. // ExtractParam extracts a parameter from the given string, returning the param and the rest of the string.
  6. func ExtractParam(line string) (string, string) {
  7. rawParams := strings.SplitN(strings.TrimSpace(line), " ", 2)
  8. param0 := rawParams[0]
  9. var param1 string
  10. if 1 < len(rawParams) {
  11. param1 = strings.TrimSpace(rawParams[1])
  12. }
  13. return param0, param1
  14. }
  15. // ArgsToStrings takes the arguments and splits them into a series of strings,
  16. // each argument separated by delim and each string bounded by maxLength.
  17. func ArgsToStrings(maxLength int, arguments []string, delim string) []string {
  18. var messages []string
  19. var buffer string
  20. for {
  21. if len(arguments) < 1 {
  22. break
  23. }
  24. if len(buffer) > 0 && maxLength < len(buffer)+len(delim)+len(arguments[0]) {
  25. messages = append(messages, buffer)
  26. buffer = ""
  27. continue
  28. }
  29. if len(buffer) > 1 {
  30. buffer += delim
  31. }
  32. buffer += arguments[0]
  33. arguments = arguments[1:]
  34. }
  35. if len(buffer) > 0 {
  36. messages = append(messages, buffer)
  37. }
  38. return messages
  39. }