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