provide separate 'normalizeName()' method
git-svn-id: svn://svn.cy55.de/Zope3/src/loops/trunk@3925 fd906abe-77d9-0310-91a1-e0d9ade77398
This commit is contained in:
parent
8ecf2645f1
commit
2fb16b5c24
1 changed files with 31 additions and 28 deletions
59
common.py
59
common.py
|
@ -224,38 +224,41 @@ class NameChooser(BaseNameChooser):
|
|||
return self.normalizeName(title)
|
||||
|
||||
def normalizeName(self, baseName):
|
||||
result = []
|
||||
for c in baseName:
|
||||
try:
|
||||
c = c.encode('ISO8859-15')
|
||||
except UnicodeEncodeError:
|
||||
# skip all characters not representable in ISO encoding
|
||||
continue
|
||||
if c in '._':
|
||||
# separator and special characters to keep
|
||||
result.append(c)
|
||||
continue
|
||||
if c in self.specialCharacters:
|
||||
# transform umlauts and other special characters
|
||||
result.append(self.specialCharacters[c].lower())
|
||||
continue
|
||||
if ord(c) > 127:
|
||||
# map to ASCII characters
|
||||
c = chr(ord(c) & 127)
|
||||
if c in ':,/\\ ':
|
||||
# replace separator characters with _
|
||||
result.append('_')
|
||||
# skip all other characters
|
||||
elif not c.isalpha() and not c.isdigit():
|
||||
continue
|
||||
else:
|
||||
result.append(c.lower())
|
||||
name = unicode(''.join(result))
|
||||
return name
|
||||
return normalizeName(baseName)
|
||||
|
||||
|
||||
def normalizeName(baseName):
|
||||
specialCharacters = {
|
||||
'\xc4': 'Ae', '\xe4': 'ae', '\xd6': 'Oe', '\xf6': 'oe',
|
||||
'\xdc': 'Ue', '\xfc': 'ue', '\xdf': 'ss'}
|
||||
result = []
|
||||
for c in baseName:
|
||||
try:
|
||||
c = c.encode('ISO8859-15')
|
||||
except UnicodeEncodeError:
|
||||
# skip all characters not representable in ISO encoding
|
||||
continue
|
||||
if c in '._':
|
||||
# separator and special characters to keep
|
||||
result.append(c)
|
||||
continue
|
||||
if c in specialCharacters:
|
||||
# transform umlauts and other special characters
|
||||
result.append(specialCharacters[c].lower())
|
||||
continue
|
||||
if ord(c) > 127:
|
||||
# map to ASCII characters
|
||||
c = chr(ord(c) & 127)
|
||||
if c in ':,/\\ ':
|
||||
# replace separator characters with _
|
||||
result.append('_')
|
||||
# skip all other characters
|
||||
elif not c.isalpha() and not c.isdigit():
|
||||
continue
|
||||
else:
|
||||
result.append(c.lower())
|
||||
name = unicode(''.join(result))
|
||||
return name
|
||||
|
||||
|
||||
# virtual attributes/properties
|
||||
|
|
Loading…
Add table
Reference in a new issue