Sluggify function added to utils

main
Óscar M. Lage 2024-10-10 14:13:55 +02:00
parent 6a6217ae31
commit ccb115a75b
1 changed files with 29 additions and 0 deletions

View File

@ -5,7 +5,10 @@ import (
"encoding/json" "encoding/json"
"fmt" "fmt"
"os" "os"
"regexp"
"strings"
"text/template" "text/template"
"unicode"
) )
func CreateDirIfNotExists(dir string) error { func CreateDirIfNotExists(dir string) error {
@ -58,3 +61,29 @@ func Sep() {
separator := "════════════════════════════════════════════════" separator := "════════════════════════════════════════════════"
fmt.Println(separator) fmt.Println(separator)
} }
func Sluggify(s string) string {
slug := strings.ToLower(s)
var b strings.Builder
for _, r := range slug {
if unicode.IsLetter(r) || unicode.IsDigit(r) {
b.WriteRune(r)
} else {
switch r {
case ' ', '-', '_':
b.WriteRune('-')
}
}
}
slug = b.String()
reg := regexp.MustCompile("[^a-z0-9-]+")
slug = reg.ReplaceAllString(slug, "")
slug = strings.ReplaceAll(slug, "--", "-")
slug = strings.Trim(slug, "-")
return slug
}