MCPcopy Index your code
hub / github.com/gosimple/slug

github.com/gosimple/slug @v1.15.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release v1.15.0 ↗ · + Follow
31 symbols 81 edges 4 files 7 documented · 23% 37 cross-repo links
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

slug

Package slug generate slug from Unicode string, URL-friendly slugify with multiple languages support.

Go Reference Tests codecov GitHub release (latest SemVer)

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"
}

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.

Core symbols most depended-on inside this repo

SubstituteRune
called by 26
slug.go
Make
called by 11
slug.go
IsSlug
called by 4
slug.go
MakeLang
called by 3
slug.go
smartTruncate
called by 3
slug.go
Substitute
called by 2
slug.go
timestamp
called by 1
slug.go
init
called by 0
languages_substitution.go

Shape

Function 30
Struct 1

Languages

Go100%

Modules by API surface

slug_test.go23 symbols
slug.go7 symbols
languages_substitution.go1 symbols

For agents

$ claude mcp add slug \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page