generated from sethub/template
[libxml2]Add libxml2 library
This commit is contained in:
@@ -0,0 +1,69 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
entities = [
|
||||
[ '', '�' ],
|
||||
[ '\t', '	' ],
|
||||
[ '\n', ' ' ],
|
||||
[ '\r', ' ' ],
|
||||
[ '"', '"' ],
|
||||
[ '&', '&' ],
|
||||
[ '<', '<' ],
|
||||
[ '>', '>' ],
|
||||
]
|
||||
|
||||
offset = [ None ] * 128
|
||||
|
||||
def gen_content(out):
|
||||
pos = 0
|
||||
r = ''
|
||||
|
||||
for rec in entities:
|
||||
char, repl = rec
|
||||
|
||||
if char:
|
||||
offset[ord(char)] = pos
|
||||
|
||||
if pos % 12 == 0: r += '\n '
|
||||
else: r += ' '
|
||||
r += '%3d,' % len(repl)
|
||||
pos += 1
|
||||
|
||||
for c in repl:
|
||||
if pos % 12 == 0: r += '\n '
|
||||
else: r += ' '
|
||||
r += "'%s'," % c
|
||||
pos += 1
|
||||
|
||||
out.write('static const char xmlEscapeContent[] = {%s\n};\n\n' % r)
|
||||
|
||||
def gen_tab(out, name, escape, is_xml):
|
||||
r = ''
|
||||
|
||||
for i in range(0x80):
|
||||
|
||||
if chr(i) in escape:
|
||||
v = offset[i]
|
||||
elif i == 0:
|
||||
v = 0
|
||||
elif is_xml and i < 32 and i != 9 and i != 10:
|
||||
v = 0
|
||||
else:
|
||||
v = -1
|
||||
|
||||
if i % 16 == 0: r += '\n '
|
||||
else: r += ' '
|
||||
r += '%2d,' % v
|
||||
|
||||
out.write('static const signed char %s[128] = {%s\n};\n\n' % (name, r))
|
||||
|
||||
with open('codegen/escape.inc', 'w') as out:
|
||||
gen_content(out)
|
||||
|
||||
gen_tab(out, 'xmlEscapeTab', '\r&<>', True)
|
||||
gen_tab(out, 'xmlEscapeTabQuot', '\r"&<>', True)
|
||||
gen_tab(out, 'xmlEscapeTabAttr', '\t\n\r"&<>', True)
|
||||
|
||||
out.write('#ifdef LIBXML_HTML_ENABLED\n\n')
|
||||
gen_tab(out, 'htmlEscapeTab', '&<>', False)
|
||||
gen_tab(out, 'htmlEscapeTabAttr', '"&<>', False)
|
||||
out.write('#endif /* LIBXML_HTML_ENABLED */\n')
|
||||
Reference in New Issue
Block a user