Skip to content

mbr/slugger

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

76 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Slugger is slugging done right

Slugger solves the seemingly simple problem of turning a title into an url frienly slug:

>>> from slugger import Slugger
>>> s = Slugger(lang='en_US')
>>> s.sluggify(u'Headless-body-in-topless-bar')
u'headless-body-in-topless-bar'

Unlike many other slugging libraries, it also handles language-specific ascii-translation. Compare the ä, ö and ü in German

>>> s = Slugger(lang='de_DE')
>>> s.sluggify(u'Türöffner')
u'tueroeffner'

against Swedish:

>>> s = Slugger(lang='sv_SE')
>>> s.sluggify(u'Färsk Ägg')
u'farsk-agg'

Criterias of what makes a good slug vary, common requirements are a maximum length and a reduced character set that is highly URL-friendly.

To generate high-quality slugs, Slugger leverages the locale information from glibc (included in the package), the unihandecode library and some hand-written replacements.

>>> s = Slugger('en_US')
>>> s.sluggify(u'Bed & Breakfast')
u'bed-and-breakfast'
>>> s.sluggify(u'Folding@Home')
u'foldingathome'

These are also language-aware:

>>> s = Slugger('fr_FR') >>> s.sluggify(u'Toi & Moi') u'toi-et-moi'

Help out

If you find a badly generated slug, please report on github. Also, any help in implementing better support for more languages is appreciated; see the official documentation on how to get involved in development.