Added slugify function
This commit is contained in:
parent
6770a442e2
commit
867feb4904
2 changed files with 73 additions and 0 deletions
60
paramecio/citoplasma/slugify.py
Normal file
60
paramecio/citoplasma/slugify.py
Normal 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
13
tests/slugifytest.py
Normal 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--')
|
||||
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue