From 2fb16b5c2468e9081d1335648beba5b0ab26a6d8 Mon Sep 17 00:00:00 2001 From: helmutm Date: Sun, 25 Jul 2010 15:58:28 +0000 Subject: [PATCH] provide separate 'normalizeName()' method git-svn-id: svn://svn.cy55.de/Zope3/src/loops/trunk@3925 fd906abe-77d9-0310-91a1-e0d9ade77398 --- common.py | 59 +++++++++++++++++++++++++++++-------------------------- 1 file changed, 31 insertions(+), 28 deletions(-) diff --git a/common.py b/common.py index 954e0cc..affbc83 100644 --- a/common.py +++ b/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