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