From ccb115a75b2fa1a8b446c1a2ce285997d050bfec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?O=CC=81scar=20M=2E=20Lage?= Date: Thu, 10 Oct 2024 14:13:55 +0200 Subject: [PATCH] Sluggify function added to utils --- utils/utils.go | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/utils/utils.go b/utils/utils.go index 8d021e8..ee70413 100644 --- a/utils/utils.go +++ b/utils/utils.go @@ -5,7 +5,10 @@ import ( "encoding/json" "fmt" "os" + "regexp" + "strings" "text/template" + "unicode" ) func CreateDirIfNotExists(dir string) error { @@ -58,3 +61,29 @@ func Sep() { 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 +}