dasherize.go 765 B

12345678910111213141516171819202122232425262728293031323334
  1. package flect
  2. import (
  3. "strings"
  4. "unicode"
  5. )
  6. // Dasherize returns an alphanumeric, lowercased, dashed string
  7. // Donald E. Knuth = donald-e-knuth
  8. // Test with + sign = test-with-sign
  9. // admin/WidgetID = admin-widget-id
  10. func Dasherize(s string) string {
  11. return New(s).Dasherize().String()
  12. }
  13. // Dasherize returns an alphanumeric, lowercased, dashed string
  14. // Donald E. Knuth = donald-e-knuth
  15. // Test with + sign = test-with-sign
  16. // admin/WidgetID = admin-widget-id
  17. func (i Ident) Dasherize() Ident {
  18. var parts []string
  19. for _, part := range i.Parts {
  20. var x string
  21. for _, c := range part {
  22. if unicode.IsLetter(c) || unicode.IsDigit(c) {
  23. x += string(c)
  24. }
  25. }
  26. parts = xappend(parts, x)
  27. }
  28. return New(strings.ToLower(strings.Join(parts, "-")))
  29. }