1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125
|
#!/usr/bin/python
# -*- coding: utf-8 -*-
# misc/gennames.py generates the appropriate ID_ and ATTR_ constants
# as well as static mappings. This generates WC compatibility stuff ---
# the Names constants.
attrsList = []
tagsList = []
f = open("svgtags.in", "r")
for i in f.xreadlines():
i = i.strip()
if i == "": continue
if i.startswith("#"): continue
tagsList.append(i)
f.close()
f = open("svgattrs.in", "r")
for i in f.xreadlines():
i = i.strip()
if i == "": continue
if i.startswith("#"): continue
attrsList.append(i)
f.close()
f = open("SVGNames.h", "w")
f.write("#ifndef SVGNAMES_H\n")
f.write("#define SVGNAMES_H\n")
f.write("\n")
f.write("#include \"misc/htmlnames.h\"\n")
f.write("#include \"dom/QualifiedName.h\"\n")
f.write("#include \"xml/Document.h\"\n")
f.write("\n")
f.write("#define idAttr ATTR_ID\n")
f.write("\n")
f.write("namespace WebCore {\n")
f.write(" namespace SVGNames {\n")
f.write(" void init();\n");
initString = ""
definition = ""
definitionHtml = ""
definitionXLink = ""
for i in tagsList:
f.write(" " * 8 + "extern DOM::QualifiedName %sTag;\n" % (i.replace("-", "_")))
definition = definition + (" " * 8 + "DOM::QualifiedName %sTag;\n" % (i.replace("-", "_")))
# ID_TEXT is hidden, we need to use ATTR_TEXT instead
if i == 'text':
initString = initString + (" %sTag = DOM::QualifiedName(DOM::makeId(DOM::svgNamespace, DOM::localNamePart(ATTR_%s)), DOM::emptyPrefixName);\n" % (i.replace("-", "_"), i.upper().replace("-", "_")))
else:
initString = initString + (" %sTag = DOM::QualifiedName(DOM::makeId(DOM::svgNamespace, ID_%s), DOM::emptyPrefixName);\n" % (i.replace("-", "_"), i.upper().replace("-", "_")))
for i in attrsList:
f.write(" " * 8 + "extern DOM::QualifiedName %sAttr;\n" % (i.replace("-", "_")))
definition = definition + (" " * 8 + "DOM::QualifiedName %sAttr;\n" % (i.replace("-", "_")))
initString = initString + (" %sAttr = DOM::QualifiedName(ATTR_%s, DOM::emptyPrefixName);\n" % (i.replace("-", "_"), i.upper().replace("-", "_")))
f.write(" }\n")
f.write(" namespace HTMLNames {\n")
f.write(" " * 8 + "extern DOM::QualifiedName classAttr;\n")
definitionHtml = definitionHtml + (" " * 8 + "DOM::QualifiedName classAttr;\n")
initString = initString + (" WebCore::HTMLNames::classAttr = DOM::QualifiedName(ATTR_CLASS, DOM::emptyPrefixName);\n")
f.write(" }\n")
f.write("}\n")
f.write("\n")
f.write("#endif\n")
############################################################
#generate XLinkAttrs
############################################################
xlinkAttrs = []
f = open("xlinkattrs.in", "r")
for i in f.xreadlines():
i = i.strip()
if i == "": continue
if i.startswith("#"): continue
xlinkAttrs.append(i)
f.close()
f = open("XLinkNames.h", "w")
f.write("#ifndef XLinkNames_H\n")
f.write("#define XLinkNames_H\n")
f.write("\n")
f.write("#include \"misc/htmlnames.h\"\n")
f.write("#include \"dom/QualifiedName.h\"\n")
f.write("#include \"xml/Document.h\"\n")
f.write("\n")
f.write("namespace WebCore {\n")
f.write(" namespace XLinkNames {\n")
for i in xlinkAttrs:
f.write(" " * 8 + "extern DOM::QualifiedName %sAttr;\n" % (i.replace("-", "_")))
definitionXLink = definitionXLink + (" " * 8 + "DOM::QualifiedName %sAttr;\n" % (i.replace("-", "_")))
initString = initString + (" WebCore::XLinkNames::%sAttr = DOM::QualifiedName(ATTR_XLINK_%s, DOM::emptyPrefixName);\n" % (i.replace("-", "_"), i.upper().replace("-", "_")))
f.write(" }\n")
f.write("}\n")
f.write("\n")
f.write("#endif\n")
f.close()
############################
# generate init function
############################
f = open("SVGNames.cpp", "w")
f.write("#include \"svg/SVGNames.h\"\n\n")
f.write("#include \"svg/XLinkNames.h\"\n\n")
f.write("namespace WebCore {")
f.write("""
namespace HTMLNames {
%s
}
namespace XLinkNames {
%s
}
namespace SVGNames {
%s
void init()
{
%s
}
}\n""" % (definitionHtml, definitionXLink, definition, initString))
f.write("}\n")
f.write("\n")
f.close()
|