diff options
Diffstat (limited to 'unidecode/__init__.py')
| -rw-r--r-- | unidecode/__init__.py | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/unidecode/__init__.py b/unidecode/__init__.py new file mode 100644 index 0000000..7b914ba --- /dev/null +++ b/unidecode/__init__.py @@ -0,0 +1,40 @@ +Char = {} + +NULLMAP = [ '' * 0x100 ] + +def unidecode(string): + retval = [] + + for char in string: + o = ord(char) + + if o < 0x80: + retval.append(char) + continue + + h = o >> 8 + l = o & 0xff + + c = Char.get(h, None) + + if c == None: + try: + mod = __import__('unidecode.x%02x'%(h), [], [], ['data']) + except ImportError: + Char[h] = NULLMAP + retval.append('') + continue + + Char[h] = mod.data + + try: + retval.append( mod.data[l] ) + except IndexError: + retval.append( '' ) + else: + try: + retval.append( c[l] ) + except IndexError: + retval.append( '' ) + + return ''.join(retval) |
