mirror of
https://github.com/thegeeklab/ansible-later.git
synced 2024-11-26 14:50:36 +00:00
332 lines
4.9 KiB
Python
332 lines
4.9 KiB
Python
# coding: utf-8
|
|
|
|
"""
|
|
Implementation of the teletex T.61 codec. Exports the following items:
|
|
|
|
- register()
|
|
"""
|
|
|
|
from __future__ import unicode_literals, division, absolute_import, print_function
|
|
|
|
import codecs
|
|
|
|
|
|
class TeletexCodec(codecs.Codec):
|
|
|
|
def encode(self, input_, errors='strict'):
|
|
return codecs.charmap_encode(input_, errors, ENCODING_TABLE)
|
|
|
|
def decode(self, input_, errors='strict'):
|
|
return codecs.charmap_decode(input_, errors, DECODING_TABLE)
|
|
|
|
|
|
class TeletexIncrementalEncoder(codecs.IncrementalEncoder):
|
|
|
|
def encode(self, input_, final=False):
|
|
return codecs.charmap_encode(input_, self.errors, ENCODING_TABLE)[0]
|
|
|
|
|
|
class TeletexIncrementalDecoder(codecs.IncrementalDecoder):
|
|
|
|
def decode(self, input_, final=False):
|
|
return codecs.charmap_decode(input_, self.errors, DECODING_TABLE)[0]
|
|
|
|
|
|
class TeletexStreamWriter(TeletexCodec, codecs.StreamWriter):
|
|
|
|
pass
|
|
|
|
|
|
class TeletexStreamReader(TeletexCodec, codecs.StreamReader):
|
|
|
|
pass
|
|
|
|
|
|
def teletex_search_function(name):
|
|
"""
|
|
Search function for teletex codec that is passed to codecs.register()
|
|
"""
|
|
|
|
if name != 'teletex':
|
|
return None
|
|
|
|
return codecs.CodecInfo(
|
|
name='teletex',
|
|
encode=TeletexCodec().encode,
|
|
decode=TeletexCodec().decode,
|
|
incrementalencoder=TeletexIncrementalEncoder,
|
|
incrementaldecoder=TeletexIncrementalDecoder,
|
|
streamreader=TeletexStreamReader,
|
|
streamwriter=TeletexStreamWriter,
|
|
)
|
|
|
|
|
|
def register():
|
|
"""
|
|
Registers the teletex codec
|
|
"""
|
|
|
|
codecs.register(teletex_search_function)
|
|
|
|
|
|
# http://en.wikipedia.org/wiki/ITU_T.61
|
|
DECODING_TABLE = (
|
|
'\u0000'
|
|
'\u0001'
|
|
'\u0002'
|
|
'\u0003'
|
|
'\u0004'
|
|
'\u0005'
|
|
'\u0006'
|
|
'\u0007'
|
|
'\u0008'
|
|
'\u0009'
|
|
'\u000A'
|
|
'\u000B'
|
|
'\u000C'
|
|
'\u000D'
|
|
'\u000E'
|
|
'\u000F'
|
|
'\u0010'
|
|
'\u0011'
|
|
'\u0012'
|
|
'\u0013'
|
|
'\u0014'
|
|
'\u0015'
|
|
'\u0016'
|
|
'\u0017'
|
|
'\u0018'
|
|
'\u0019'
|
|
'\u001A'
|
|
'\u001B'
|
|
'\u001C'
|
|
'\u001D'
|
|
'\u001E'
|
|
'\u001F'
|
|
'\u0020'
|
|
'\u0021'
|
|
'\u0022'
|
|
'\ufffe'
|
|
'\ufffe'
|
|
'\u0025'
|
|
'\u0026'
|
|
'\u0027'
|
|
'\u0028'
|
|
'\u0029'
|
|
'\u002A'
|
|
'\u002B'
|
|
'\u002C'
|
|
'\u002D'
|
|
'\u002E'
|
|
'\u002F'
|
|
'\u0030'
|
|
'\u0031'
|
|
'\u0032'
|
|
'\u0033'
|
|
'\u0034'
|
|
'\u0035'
|
|
'\u0036'
|
|
'\u0037'
|
|
'\u0038'
|
|
'\u0039'
|
|
'\u003A'
|
|
'\u003B'
|
|
'\u003C'
|
|
'\u003D'
|
|
'\u003E'
|
|
'\u003F'
|
|
'\u0040'
|
|
'\u0041'
|
|
'\u0042'
|
|
'\u0043'
|
|
'\u0044'
|
|
'\u0045'
|
|
'\u0046'
|
|
'\u0047'
|
|
'\u0048'
|
|
'\u0049'
|
|
'\u004A'
|
|
'\u004B'
|
|
'\u004C'
|
|
'\u004D'
|
|
'\u004E'
|
|
'\u004F'
|
|
'\u0050'
|
|
'\u0051'
|
|
'\u0052'
|
|
'\u0053'
|
|
'\u0054'
|
|
'\u0055'
|
|
'\u0056'
|
|
'\u0057'
|
|
'\u0058'
|
|
'\u0059'
|
|
'\u005A'
|
|
'\u005B'
|
|
'\ufffe'
|
|
'\u005D'
|
|
'\ufffe'
|
|
'\u005F'
|
|
'\ufffe'
|
|
'\u0061'
|
|
'\u0062'
|
|
'\u0063'
|
|
'\u0064'
|
|
'\u0065'
|
|
'\u0066'
|
|
'\u0067'
|
|
'\u0068'
|
|
'\u0069'
|
|
'\u006A'
|
|
'\u006B'
|
|
'\u006C'
|
|
'\u006D'
|
|
'\u006E'
|
|
'\u006F'
|
|
'\u0070'
|
|
'\u0071'
|
|
'\u0072'
|
|
'\u0073'
|
|
'\u0074'
|
|
'\u0075'
|
|
'\u0076'
|
|
'\u0077'
|
|
'\u0078'
|
|
'\u0079'
|
|
'\u007A'
|
|
'\ufffe'
|
|
'\u007C'
|
|
'\ufffe'
|
|
'\ufffe'
|
|
'\u007F'
|
|
'\u0080'
|
|
'\u0081'
|
|
'\u0082'
|
|
'\u0083'
|
|
'\u0084'
|
|
'\u0085'
|
|
'\u0086'
|
|
'\u0087'
|
|
'\u0088'
|
|
'\u0089'
|
|
'\u008A'
|
|
'\u008B'
|
|
'\u008C'
|
|
'\u008D'
|
|
'\u008E'
|
|
'\u008F'
|
|
'\u0090'
|
|
'\u0091'
|
|
'\u0092'
|
|
'\u0093'
|
|
'\u0094'
|
|
'\u0095'
|
|
'\u0096'
|
|
'\u0097'
|
|
'\u0098'
|
|
'\u0099'
|
|
'\u009A'
|
|
'\u009B'
|
|
'\u009C'
|
|
'\u009D'
|
|
'\u009E'
|
|
'\u009F'
|
|
'\u00A0'
|
|
'\u00A1'
|
|
'\u00A2'
|
|
'\u00A3'
|
|
'\u0024'
|
|
'\u00A5'
|
|
'\u0023'
|
|
'\u00A7'
|
|
'\u00A4'
|
|
'\ufffe'
|
|
'\ufffe'
|
|
'\u00AB'
|
|
'\ufffe'
|
|
'\ufffe'
|
|
'\ufffe'
|
|
'\ufffe'
|
|
'\u00B0'
|
|
'\u00B1'
|
|
'\u00B2'
|
|
'\u00B3'
|
|
'\u00D7'
|
|
'\u00B5'
|
|
'\u00B6'
|
|
'\u00B7'
|
|
'\u00F7'
|
|
'\ufffe'
|
|
'\ufffe'
|
|
'\u00BB'
|
|
'\u00BC'
|
|
'\u00BD'
|
|
'\u00BE'
|
|
'\u00BF'
|
|
'\ufffe'
|
|
'\u0300'
|
|
'\u0301'
|
|
'\u0302'
|
|
'\u0303'
|
|
'\u0304'
|
|
'\u0306'
|
|
'\u0307'
|
|
'\u0308'
|
|
'\ufffe'
|
|
'\u030A'
|
|
'\u0327'
|
|
'\u0332'
|
|
'\u030B'
|
|
'\u0328'
|
|
'\u030C'
|
|
'\ufffe'
|
|
'\ufffe'
|
|
'\ufffe'
|
|
'\ufffe'
|
|
'\ufffe'
|
|
'\ufffe'
|
|
'\ufffe'
|
|
'\ufffe'
|
|
'\ufffe'
|
|
'\ufffe'
|
|
'\ufffe'
|
|
'\ufffe'
|
|
'\ufffe'
|
|
'\ufffe'
|
|
'\ufffe'
|
|
'\ufffe'
|
|
'\u2126'
|
|
'\u00C6'
|
|
'\u00D0'
|
|
'\u00AA'
|
|
'\u0126'
|
|
'\ufffe'
|
|
'\u0132'
|
|
'\u013F'
|
|
'\u0141'
|
|
'\u00D8'
|
|
'\u0152'
|
|
'\u00BA'
|
|
'\u00DE'
|
|
'\u0166'
|
|
'\u014A'
|
|
'\u0149'
|
|
'\u0138'
|
|
'\u00E6'
|
|
'\u0111'
|
|
'\u00F0'
|
|
'\u0127'
|
|
'\u0131'
|
|
'\u0133'
|
|
'\u0140'
|
|
'\u0142'
|
|
'\u00F8'
|
|
'\u0153'
|
|
'\u00DF'
|
|
'\u00FE'
|
|
'\u0167'
|
|
'\u014B'
|
|
'\ufffe'
|
|
)
|
|
ENCODING_TABLE = codecs.charmap_build(DECODING_TABLE)
|