Git Product home page Git Product logo

slug's Introduction

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.

slug's People

Contributors

matrixik avatar antonlindstrom avatar aym3ntn avatar hectorj avatar patrickdappollonio avatar xescugc avatar dhi9 avatar alphawong avatar aquilax avatar fraiss-c avatar kataras avatar henkka avatar jansvabik avatar jhvst avatar theriverman avatar marcusirgens avatar kugelschieber avatar thebaer avatar vannem-sj avatar navruzm avatar redlinkk avatar gumeniukcom avatar stefanb avatar stefanfransen avatar thecashewtrader avatar tomone avatar vasilegoian avatar khw7096 avatar imikod avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.