xref: /aosp_15_r20/external/libxml2/tools/genEscape.py (revision 7c5688314b92172186c154356a6374bf7684c3ca)
1#!/usr/bin/env python3
2
3entities = [
4    [ '',   '�' ],
5    [ '\t', '	' ],
6    [ '\n', '
' ],
7    [ '\r', '
' ],
8    [ '"',  '"' ],
9    [ '&',  '&' ],
10    [ '<',  '&lt;' ],
11    [ '>',  '&gt;' ],
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