You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			326 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			Python
		
	
			
		
		
	
	
			326 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			Python
		
	
# coding: utf-8
 | 
						|
"""
 | 
						|
 | 
						|
    webencodings.x_user_defined
 | 
						|
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~
 | 
						|
 | 
						|
    An implementation of the x-user-defined encoding.
 | 
						|
 | 
						|
    :copyright: Copyright 2012 by Simon Sapin
 | 
						|
    :license: BSD, see LICENSE for details.
 | 
						|
 | 
						|
"""
 | 
						|
 | 
						|
from __future__ import unicode_literals
 | 
						|
 | 
						|
import codecs
 | 
						|
 | 
						|
 | 
						|
### Codec APIs
 | 
						|
 | 
						|
class Codec(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 IncrementalEncoder(codecs.IncrementalEncoder):
 | 
						|
    def encode(self, input, final=False):
 | 
						|
        return codecs.charmap_encode(input, self.errors, encoding_table)[0]
 | 
						|
 | 
						|
 | 
						|
class IncrementalDecoder(codecs.IncrementalDecoder):
 | 
						|
    def decode(self, input, final=False):
 | 
						|
        return codecs.charmap_decode(input, self.errors, decoding_table)[0]
 | 
						|
 | 
						|
 | 
						|
class StreamWriter(Codec, codecs.StreamWriter):
 | 
						|
    pass
 | 
						|
 | 
						|
 | 
						|
class StreamReader(Codec, codecs.StreamReader):
 | 
						|
    pass
 | 
						|
 | 
						|
 | 
						|
### encodings module API
 | 
						|
 | 
						|
codec_info = codecs.CodecInfo(
 | 
						|
    name='x-user-defined',
 | 
						|
    encode=Codec().encode,
 | 
						|
    decode=Codec().decode,
 | 
						|
    incrementalencoder=IncrementalEncoder,
 | 
						|
    incrementaldecoder=IncrementalDecoder,
 | 
						|
    streamreader=StreamReader,
 | 
						|
    streamwriter=StreamWriter,
 | 
						|
)
 | 
						|
 | 
						|
 | 
						|
### Decoding Table
 | 
						|
 | 
						|
# Python 3:
 | 
						|
# for c in range(256): print('    %r' % chr(c if c < 128 else c + 0xF700))
 | 
						|
decoding_table = (
 | 
						|
    '\x00'
 | 
						|
    '\x01'
 | 
						|
    '\x02'
 | 
						|
    '\x03'
 | 
						|
    '\x04'
 | 
						|
    '\x05'
 | 
						|
    '\x06'
 | 
						|
    '\x07'
 | 
						|
    '\x08'
 | 
						|
    '\t'
 | 
						|
    '\n'
 | 
						|
    '\x0b'
 | 
						|
    '\x0c'
 | 
						|
    '\r'
 | 
						|
    '\x0e'
 | 
						|
    '\x0f'
 | 
						|
    '\x10'
 | 
						|
    '\x11'
 | 
						|
    '\x12'
 | 
						|
    '\x13'
 | 
						|
    '\x14'
 | 
						|
    '\x15'
 | 
						|
    '\x16'
 | 
						|
    '\x17'
 | 
						|
    '\x18'
 | 
						|
    '\x19'
 | 
						|
    '\x1a'
 | 
						|
    '\x1b'
 | 
						|
    '\x1c'
 | 
						|
    '\x1d'
 | 
						|
    '\x1e'
 | 
						|
    '\x1f'
 | 
						|
    ' '
 | 
						|
    '!'
 | 
						|
    '"'
 | 
						|
    '#'
 | 
						|
    '$'
 | 
						|
    '%'
 | 
						|
    '&'
 | 
						|
    "'"
 | 
						|
    '('
 | 
						|
    ')'
 | 
						|
    '*'
 | 
						|
    '+'
 | 
						|
    ','
 | 
						|
    '-'
 | 
						|
    '.'
 | 
						|
    '/'
 | 
						|
    '0'
 | 
						|
    '1'
 | 
						|
    '2'
 | 
						|
    '3'
 | 
						|
    '4'
 | 
						|
    '5'
 | 
						|
    '6'
 | 
						|
    '7'
 | 
						|
    '8'
 | 
						|
    '9'
 | 
						|
    ':'
 | 
						|
    ';'
 | 
						|
    '<'
 | 
						|
    '='
 | 
						|
    '>'
 | 
						|
    '?'
 | 
						|
    '@'
 | 
						|
    'A'
 | 
						|
    'B'
 | 
						|
    'C'
 | 
						|
    'D'
 | 
						|
    'E'
 | 
						|
    'F'
 | 
						|
    'G'
 | 
						|
    'H'
 | 
						|
    'I'
 | 
						|
    'J'
 | 
						|
    'K'
 | 
						|
    'L'
 | 
						|
    'M'
 | 
						|
    'N'
 | 
						|
    'O'
 | 
						|
    'P'
 | 
						|
    'Q'
 | 
						|
    'R'
 | 
						|
    'S'
 | 
						|
    'T'
 | 
						|
    'U'
 | 
						|
    'V'
 | 
						|
    'W'
 | 
						|
    'X'
 | 
						|
    'Y'
 | 
						|
    'Z'
 | 
						|
    '['
 | 
						|
    '\\'
 | 
						|
    ']'
 | 
						|
    '^'
 | 
						|
    '_'
 | 
						|
    '`'
 | 
						|
    'a'
 | 
						|
    'b'
 | 
						|
    'c'
 | 
						|
    'd'
 | 
						|
    'e'
 | 
						|
    'f'
 | 
						|
    'g'
 | 
						|
    'h'
 | 
						|
    'i'
 | 
						|
    'j'
 | 
						|
    'k'
 | 
						|
    'l'
 | 
						|
    'm'
 | 
						|
    'n'
 | 
						|
    'o'
 | 
						|
    'p'
 | 
						|
    'q'
 | 
						|
    'r'
 | 
						|
    's'
 | 
						|
    't'
 | 
						|
    'u'
 | 
						|
    'v'
 | 
						|
    'w'
 | 
						|
    'x'
 | 
						|
    'y'
 | 
						|
    'z'
 | 
						|
    '{'
 | 
						|
    '|'
 | 
						|
    '}'
 | 
						|
    '~'
 | 
						|
    '\x7f'
 | 
						|
    '\uf780'
 | 
						|
    '\uf781'
 | 
						|
    '\uf782'
 | 
						|
    '\uf783'
 | 
						|
    '\uf784'
 | 
						|
    '\uf785'
 | 
						|
    '\uf786'
 | 
						|
    '\uf787'
 | 
						|
    '\uf788'
 | 
						|
    '\uf789'
 | 
						|
    '\uf78a'
 | 
						|
    '\uf78b'
 | 
						|
    '\uf78c'
 | 
						|
    '\uf78d'
 | 
						|
    '\uf78e'
 | 
						|
    '\uf78f'
 | 
						|
    '\uf790'
 | 
						|
    '\uf791'
 | 
						|
    '\uf792'
 | 
						|
    '\uf793'
 | 
						|
    '\uf794'
 | 
						|
    '\uf795'
 | 
						|
    '\uf796'
 | 
						|
    '\uf797'
 | 
						|
    '\uf798'
 | 
						|
    '\uf799'
 | 
						|
    '\uf79a'
 | 
						|
    '\uf79b'
 | 
						|
    '\uf79c'
 | 
						|
    '\uf79d'
 | 
						|
    '\uf79e'
 | 
						|
    '\uf79f'
 | 
						|
    '\uf7a0'
 | 
						|
    '\uf7a1'
 | 
						|
    '\uf7a2'
 | 
						|
    '\uf7a3'
 | 
						|
    '\uf7a4'
 | 
						|
    '\uf7a5'
 | 
						|
    '\uf7a6'
 | 
						|
    '\uf7a7'
 | 
						|
    '\uf7a8'
 | 
						|
    '\uf7a9'
 | 
						|
    '\uf7aa'
 | 
						|
    '\uf7ab'
 | 
						|
    '\uf7ac'
 | 
						|
    '\uf7ad'
 | 
						|
    '\uf7ae'
 | 
						|
    '\uf7af'
 | 
						|
    '\uf7b0'
 | 
						|
    '\uf7b1'
 | 
						|
    '\uf7b2'
 | 
						|
    '\uf7b3'
 | 
						|
    '\uf7b4'
 | 
						|
    '\uf7b5'
 | 
						|
    '\uf7b6'
 | 
						|
    '\uf7b7'
 | 
						|
    '\uf7b8'
 | 
						|
    '\uf7b9'
 | 
						|
    '\uf7ba'
 | 
						|
    '\uf7bb'
 | 
						|
    '\uf7bc'
 | 
						|
    '\uf7bd'
 | 
						|
    '\uf7be'
 | 
						|
    '\uf7bf'
 | 
						|
    '\uf7c0'
 | 
						|
    '\uf7c1'
 | 
						|
    '\uf7c2'
 | 
						|
    '\uf7c3'
 | 
						|
    '\uf7c4'
 | 
						|
    '\uf7c5'
 | 
						|
    '\uf7c6'
 | 
						|
    '\uf7c7'
 | 
						|
    '\uf7c8'
 | 
						|
    '\uf7c9'
 | 
						|
    '\uf7ca'
 | 
						|
    '\uf7cb'
 | 
						|
    '\uf7cc'
 | 
						|
    '\uf7cd'
 | 
						|
    '\uf7ce'
 | 
						|
    '\uf7cf'
 | 
						|
    '\uf7d0'
 | 
						|
    '\uf7d1'
 | 
						|
    '\uf7d2'
 | 
						|
    '\uf7d3'
 | 
						|
    '\uf7d4'
 | 
						|
    '\uf7d5'
 | 
						|
    '\uf7d6'
 | 
						|
    '\uf7d7'
 | 
						|
    '\uf7d8'
 | 
						|
    '\uf7d9'
 | 
						|
    '\uf7da'
 | 
						|
    '\uf7db'
 | 
						|
    '\uf7dc'
 | 
						|
    '\uf7dd'
 | 
						|
    '\uf7de'
 | 
						|
    '\uf7df'
 | 
						|
    '\uf7e0'
 | 
						|
    '\uf7e1'
 | 
						|
    '\uf7e2'
 | 
						|
    '\uf7e3'
 | 
						|
    '\uf7e4'
 | 
						|
    '\uf7e5'
 | 
						|
    '\uf7e6'
 | 
						|
    '\uf7e7'
 | 
						|
    '\uf7e8'
 | 
						|
    '\uf7e9'
 | 
						|
    '\uf7ea'
 | 
						|
    '\uf7eb'
 | 
						|
    '\uf7ec'
 | 
						|
    '\uf7ed'
 | 
						|
    '\uf7ee'
 | 
						|
    '\uf7ef'
 | 
						|
    '\uf7f0'
 | 
						|
    '\uf7f1'
 | 
						|
    '\uf7f2'
 | 
						|
    '\uf7f3'
 | 
						|
    '\uf7f4'
 | 
						|
    '\uf7f5'
 | 
						|
    '\uf7f6'
 | 
						|
    '\uf7f7'
 | 
						|
    '\uf7f8'
 | 
						|
    '\uf7f9'
 | 
						|
    '\uf7fa'
 | 
						|
    '\uf7fb'
 | 
						|
    '\uf7fc'
 | 
						|
    '\uf7fd'
 | 
						|
    '\uf7fe'
 | 
						|
    '\uf7ff'
 | 
						|
)
 | 
						|
 | 
						|
### Encoding table
 | 
						|
encoding_table = codecs.charmap_build(decoding_table)
 |