24 lines
471 B
Go
24 lines
471 B
Go
|
package template
|
||
|
|
||
|
import (
|
||
|
"regexp"
|
||
|
"strings"
|
||
|
|
||
|
"github.com/rainycape/unidecode"
|
||
|
)
|
||
|
|
||
|
var (
|
||
|
nonValidChars = regexp.MustCompile("[^a-z0-9-_]")
|
||
|
multipleDashes = regexp.MustCompile("-+")
|
||
|
)
|
||
|
|
||
|
func Slugify(s string) (slug string) {
|
||
|
slug = strings.TrimSpace(s)
|
||
|
slug = unidecode.Unidecode(slug)
|
||
|
slug = strings.ToLower(slug)
|
||
|
slug = nonValidChars.ReplaceAllString(slug, "-")
|
||
|
slug = multipleDashes.ReplaceAllString(slug, "-")
|
||
|
slug = strings.Trim(slug, "-_")
|
||
|
return slug
|
||
|
}
|