package flect import ( "strings" "unicode" ) // Dasherize returns an alphanumeric, lowercased, dashed string // Donald E. Knuth = donald-e-knuth // Test with + sign = test-with-sign // admin/WidgetID = admin-widget-id func Dasherize(s string) string { return New(s).Dasherize().String() } // Dasherize returns an alphanumeric, lowercased, dashed string // Donald E. Knuth = donald-e-knuth // Test with + sign = test-with-sign // admin/WidgetID = admin-widget-id func (i Ident) Dasherize() Ident { var parts []string for _, part := range i.Parts { var x string for _, c := range part { if unicode.IsLetter(c) || unicode.IsDigit(c) { x += string(c) } } parts = xappend(parts, x) } return New(strings.ToLower(strings.Join(parts, "-"))) }