README
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) // Will print: "hello-world-khello-vorld"
someText := slug.Make("影師")
fmt.Println(someText) // Will print: "ying-shi"
enText := slug.MakeLang("This & that", "en")
fmt.Println(enText) // Will print: "this-and-that"
deText := slug.MakeLang("Diese & Dass", "de")
fmt.Println(deText) // Will print: "diese-und-dass"
slug.Lowercase = false // Keep uppercase characters
deUppercaseText := slug.MakeLang("Diese & Dass", "de")
fmt.Println(deUppercaseText) // Will print: "Diese-und-Dass"
slug.CustomSub = map[string]string{
"water": "sand",
}
textSub := slug.Make("water is hot")
fmt.Println(textSub) // Will print: "sand-is-hot"
}
Requests or bugs?
https://github.com/gosimple/slug/issues
Installation
go get -u github.com/gosimple/slug
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.
Documentation
Overview ¶
Package slug generate slug from unicode string, URL-friendly slugify with multiple languages support.
Example:
package main import( "github.com/gosimple/slug" "fmt" ) func main () { text := slug.Make("Hellö Wörld хелло ворлд") fmt.Println(text) // Will print: "hello-world-khello-vorld" someText := slug.Make("影師") fmt.Println(someText) // Will print: "ying-shi" enText := slug.MakeLang("This & that", "en") fmt.Println(enText) // Will print: "this-and-that" deText := slug.MakeLang("Diese & Dass", "de") fmt.Println(deText) // Will print: "diese-und-dass" slug.Lowercase = false // Keep uppercase characters deUppercaseText := slug.MakeLang("Diese & Dass", "de") fmt.Println(deUppercaseText) // Will print: "Diese-und-Dass" slug.CustomSub = map[string]string{ "water": "sand", } textSub := slug.Make("water is hot") fmt.Println(textSub) // Will print: "sand-is-hot" }
Requests or bugs?
Index ¶
Constants ¶
Variables ¶
var ( // CustomSub stores custom substitution map CustomSub map[string]string // CustomRuneSub stores custom rune substitution map CustomRuneSub map[rune]string // MaxLength stores maximum slug length. // It's smart so it will cat slug after full word. // By default slugs aren't shortened. // If MaxLength is smaller than length of the first word, then returned // slug will contain only substring from the first word truncated // after MaxLength. MaxLength int // Lowercase defines if the resulting slug is transformed to lowercase. // Default is true. Lowercase = true )
Functions ¶
func IsSlug ¶
IsSlug returns True if provided text does not contain white characters, punctuation, all letters are lower case and only from ASCII range. It could contain `-` and `_` but not at the beginning or end of the text. It should be in range of the MaxLength var if specified. All output from slug.Make(text) should pass this test.
func Make ¶
Make returns slug generated from provided string. Will use "en" as language substitution.
func MakeLang ¶
MakeLang returns slug generated from provided string and will use provided language for chars substitution.
func Substitute ¶
Substitute returns string with superseded all substrings from provided substitution map. Substitution map will be applied in alphabetic order. Many passes, on one substitution another one could apply.