1#!/usr/bin/env python3 2 3entities = [ 4 [ '', '�' ], 5 [ '\t', '	' ], 6 [ '\n', ' ' ], 7 [ '\r', ' ' ], 8 [ '"', '"' ], 9 [ '&', '&' ], 10 [ '<', '<' ], 11 [ '>', '>' ], 12] 13 14### xmlEscapeContent 15 16offset = [ None ] * 128 17pos = 0 18r = '' 19 20for rec in entities: 21 char, repl = rec 22 23 if char: 24 offset[ord(char)] = pos 25 26 if pos % 12 == 0: r += '\n ' 27 else: r += ' ' 28 r += '%3d,' % len(repl) 29 pos += 1 30 31 for c in repl: 32 if pos % 12 == 0: r += '\n ' 33 else: r += ' ' 34 r += "'%s'," % c 35 pos += 1 36 37print('static const char xmlEscapeContent[] = {%s\n};\n' % r) 38 39### xmlEscapeTab 40 41escape = '\r&<>' 42r = '' 43 44for i in range(0x80): 45 46 if chr(i) in escape: 47 v = offset[i] 48 elif i != 9 and i != 10 and i < 20: 49 v = 0 50 else: 51 v = -1 52 53 if i % 16 == 0: r += '\n ' 54 else: r += ' ' 55 r += '%2d,' % v 56 57print('static const char xmlEscapeTab[128] = {%s\n};\n' % r) 58 59### xmlEscapeTabAttr 60 61escape = '\t\n\r"&<>' 62r = '' 63 64for i in range(0x80): 65 66 if chr(i) in escape: 67 v = offset[i] 68 elif i != 9 and i != 10 and i < 20: 69 v = 0 70 else: 71 v = -1 72 73 if i % 16 == 0: r += '\n ' 74 else: r += ' ' 75 r += '%2d,' % v 76 77print('static const char xmlEscapeTabAttr[128] = {%s\n};\n' % r) 78 79