ok

Mini Shell

Direktori : /opt/alt/python35/lib/python3.5/site-packages/asn1crypto/
Upload File :
Current File : //opt/alt/python35/lib/python3.5/site-packages/asn1crypto/_teletex_codec.py

# 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)

Zerion Mini Shell 1.0