Port slugify to Python3

This commit is contained in:
Manuel Ebert 2014-01-19 11:58:13 +01:00
parent 92867a2f84
commit 6c9687110c
6 changed files with 16 additions and 7 deletions

View file

@ -7,7 +7,7 @@ jrnl is a simple journal application for your command line.
"""
__title__ = 'jrnl'
__version__ = '1.7.5'
__version__ = '1.7.6'
__author__ = 'Manuel Ebert'
__license__ = 'MIT License'
__copyright__ = 'Copyright 2013 - 2014 Manuel Ebert'

View file

@ -3,12 +3,10 @@
import os
import string
try: from slugify import slugify
except ImportError: import slugify
try: import simplejson as json
except ImportError: import json
try: from .util import u
except (SystemError, ValueError): from util import u
try: from .util import u, slugify
except (SystemError, ValueError): from util import u, slugify
def get_tags_count(journal):

View file

@ -15,6 +15,7 @@ import re
import tempfile
import subprocess
import codecs
import unicodedata
PY3 = sys.version_info[0] == 3
PY2 = sys.version_info[0] == 2
@ -144,3 +145,14 @@ def colorize(string):
"""Returns the string wrapped in cyan ANSI escape"""
return u"\033[36m{}\033[39m".format(string)
def slugify(string):
"""Slugifies a string.
Based on public domain code from https://github.com/zacharyvoase/slugify
and ported to deal with all kinds of python 2 and 3 strings
"""
string = u(string)
ascii_string = str(unicodedata.normalize('NFKD', string).encode('ascii', 'ignore'))
no_punctuation = re.sub(r'[^\w\s-]', '', ascii_string).strip().lower()
slug = re.sub(r'[-\s]+', '-', no_punctuation)
return u(slug)