| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 | 
							- # Mapping from LCD source encoding to unicode characters
 
- CUSTOM_CHARS = {
 
-     '\x04': '🔃',
 
-     '\xe4': 'µ',
 
-     '\xdf': '°',
 
-     '\xe1': 'ä',
 
-     '\xe4': 'μ',
 
-     '\xef': 'ö',
 
-     '\xf5': 'ü',
 
- }
 
- # Charaters to be remapped prior to source-encoding transformation
 
- # This transformation is applied to the translation prior to being converted to the final encoding,
 
- # and maps UTF8 to UTF8. It replaces unavailable symbols in the translation to a close
 
- # representation in the source encoding.
 
- TRANS_CHARS = {
 
-     'Ä': 'ä',
 
-     'Å': 'A',
 
-     'Ö': 'ö',
 
-     'Ü': 'ü',
 
-     'å': 'a',
 
-     'æ': 'ä',
 
-     'ø': 'ö',
 
-     'ß': 'ss',
 
- }
 
- def _character_check(buf, valid_chars):
 
-     for c in buf:
 
-         if (not c.isascii() or not c.isprintable()) and c not in valid_chars:
 
-             return c
 
-     return None
 
- def source_check(buf):
 
-     valid_chars = set(CUSTOM_CHARS.values())
 
-     valid_chars.add('\n')
 
-     return _character_check(buf, valid_chars)
 
- def translation_check(buf):
 
-     valid_chars = set(CUSTOM_CHARS.keys())
 
-     valid_chars.add('\n')
 
-     return _character_check(buf, valid_chars)
 
- def source_to_unicode(buf):
 
-     for src, dst in CUSTOM_CHARS.items():
 
-         buf = buf.replace(src, dst)
 
-     return buf
 
- def trans_replace(buf):
 
-     for src, dst in TRANS_CHARS.items():
 
-         buf = buf.replace(src, dst)
 
-     return buf
 
- def unicode_to_source(buf):
 
-     buf = trans_replace(buf)
 
-     for dst, src in CUSTOM_CHARS.items():
 
-         buf = buf.replace(src, dst)
 
-     return buf
 
 
  |