slug
Package slug
generate slug from Unicode string, URL-friendly slugify with
multiple languages support.
Example
package main
import (
"fmt"
"github.com/gosimple/slug"
)
func main() {
text := slug.Make("Hellö Wörld хелло ворлд")
fmt.Println(text)
someText := slug.Make("影師")
fmt.Println(someText)
enText := slug.MakeLang("This & that", "en")
fmt.Println(enText)
deText := slug.MakeLang("Diese & Dass", "de")
fmt.Println(deText)
slug.Lowercase = false
deUppercaseText := slug.MakeLang("Diese & Dass", "de")
fmt.Println(deUppercaseText)
slug.CustomSub = map[string]string{
"water": "sand",
}
textSub := slug.Make("water is hot")
fmt.Println(textSub)
}
Design
This library will always returns clean output from any Unicode string
containing only the following ASCII characters:
- numbers:
0-9
- small letters:
a-z
- big letters:
A-Z
(only if you set Lowercase
to false
) - minus sign:
-
- underscore:
_
Minus sign and underscore characters will never appear at the beginning or
the end of the returned string.
Thanks to context-insensitive transliteration of Unicode characters to ASCII
output returned string is safe for URL slugs and filenames.
Requests or bugs?
https://github.com/gosimple/slug/issues
If your language is missing you could add it in languages_substitution.go
file.
In case of missing proper Unicode characters transliteration to ASCII you could
add them to underlying library:
https://github.com/gosimple/unidecode.
Installation
go get -u github.com/gosimple/slug
Benchmarking
go test -run=NONE -bench=. -benchmem -count=6 ./... > old.txt
# make changes
go test -run=NONE -bench=. -benchmem -count=6 ./... > new.txt
go install golang.org/x/perf/cmd/benchstat@latest
benchstat old.txt new.txt
License
The source files are distributed under the
Mozilla Public License, version 2.0,
unless otherwise noted.
Please read the FAQ
if you have further questions regarding the license.