27 lines
553 B
Go
27 lines
553 B
Go
package filehandling
|
|
|
|
import (
|
|
"bytes"
|
|
"path/filepath"
|
|
"strings"
|
|
)
|
|
|
|
func Slugify(s string) string {
|
|
var slug bytes.Buffer
|
|
for _, r := range s {
|
|
if (r >= 'a' && r <= 'z') || (r >= '0' && r <= '9') {
|
|
slug.WriteRune(r)
|
|
} else if r >= 'A' && r <= 'Z' {
|
|
slug.WriteRune(r + 32) // Convert to lowercase
|
|
} else {
|
|
slug.WriteRune('-')
|
|
}
|
|
}
|
|
return slug.String()
|
|
}
|
|
|
|
func SlugRelative(base, path string) string {
|
|
rel := strings.TrimPrefix(path, base+string(filepath.Separator))
|
|
rel = strings.TrimSuffix(rel, filepath.Ext(rel))
|
|
return rel
|
|
}
|