Added slugify function

This commit is contained in:
Antonio de la Rosa 2016-01-19 17:13:18 +01:00
parent 6770a442e2
commit 867feb4904
2 changed files with 73 additions and 0 deletions

View file

@ -0,0 +1,60 @@
#!/usr/bin/python
#A very simple version of strtr of php.
def strtr(str_in, pat_str, rep_str):
ret_str=''
arr_dict={}
if(len(pat_str)!=len(rep_str)):
raise NameError('Ups, pat_str len != rep_str len')
#Create dictionary
for (i, l) in enumerate(pat_str):
arr_dict[l]=rep_str[i]
#Make a for to the str_in and substr.
for le in str_in:
if le in arr_dict:
ret_str+=arr_dict[le]
else:
ret_str+=le
return (ret_str)
def slugify(str_in, respect_upper=False, replace_space='-', replace_dot=False, replace_barr=False):
str_out=''
from_str='àáâãäåæçèéêëìíîïðòóôõöøùúûýþÿŕñÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÐÒÓÔÕÖØÙÚÛÝỲŸÞŔÑ¿?!¡()"|#*%,;+&$ºª<>`çÇ{}@~=^:´[]\''
to_str= 'aaaaaaaceeeeiiiidoooooouuuybyrnAAAAAACEEEEIIIIDOOOOOOUUUYYYBRN----------------------------------'
if replace_dot==True:
from_str+='.'
from_to+='-'
if replace_barr==True:
from_str+="/"
to_str+="-"
str_out=str_in.strip()
str_out=strtr(str_out, from_str, to_str)
str_out=str_out.replace(" ", replace_space)
if respect_upper==False:
pass
return str_out

13
tests/slugifytest.py Normal file
View file

@ -0,0 +1,13 @@
from settings import config
from paramecio.citoplasma import slugify
import unittest
class TestFieldMethods(unittest.TestCase):
def test_slugify(self):
phrase=slugify.slugify('this!()is a crap phrase o}çÇf oh yeah¡\'')
self.assertEqual(phrase, 'this---is-a-crap-phrase-o---f-oh-yeah--')