File indexing completed on 2024-04-28 15:24:27

0001 #!/usr/bin/python
0002 # -*- coding: utf-8 -*-
0003 # misc/gennames.py generates the appropriate ID_ and ATTR_ constants
0004 # as well as static mappings. This generates WC compatibility stuff ---
0005 # the Names constants.
0006 
0007 attrsList = []
0008 tagsList = []
0009 
0010 f = open("svgtags.in", "r")
0011 for i in f.xreadlines():
0012     i = i.strip()
0013     if i == "": continue
0014     if i.startswith("#"): continue
0015     tagsList.append(i)
0016 f.close()
0017 
0018 f = open("svgattrs.in", "r")
0019 for i in f.xreadlines():
0020     i = i.strip()
0021     if i == "": continue
0022     if i.startswith("#"): continue
0023     attrsList.append(i)
0024 f.close()
0025 
0026 f = open("SVGNames.h", "w")
0027 f.write("#ifndef SVGNAMES_H\n")
0028 f.write("#define SVGNAMES_H\n")
0029 f.write("\n")
0030 f.write("#include \"misc/htmlnames.h\"\n")
0031 f.write("#include \"dom/QualifiedName.h\"\n")
0032 f.write("#include \"xml/Document.h\"\n")
0033 f.write("\n")
0034 f.write("#define idAttr ATTR_ID\n")
0035 f.write("\n")
0036 f.write("namespace WebCore {\n")
0037 f.write("    namespace SVGNames {\n")
0038 f.write("        void init();\n");
0039 initString = ""
0040 definition = ""
0041 definitionHtml = ""
0042 definitionXLink = ""
0043 for i in tagsList:
0044     f.write(" " * 8 + "extern DOM::QualifiedName %sTag;\n" % (i.replace("-", "_")))
0045     definition = definition + (" " * 8 + "DOM::QualifiedName %sTag;\n" % (i.replace("-", "_")))
0046     # ID_TEXT is hidden, we need to use ATTR_TEXT instead
0047     if i == 'text':
0048         initString = initString + ("            %sTag = DOM::QualifiedName(DOM::makeId(DOM::svgNamespace, DOM::localNamePart(ATTR_%s)), DOM::emptyPrefixName);\n" % (i.replace("-", "_"), i.upper().replace("-", "_")))
0049     else:
0050         initString = initString + ("            %sTag = DOM::QualifiedName(DOM::makeId(DOM::svgNamespace, ID_%s), DOM::emptyPrefixName);\n" % (i.replace("-", "_"), i.upper().replace("-", "_")))
0051 for i in attrsList:
0052     f.write(" " * 8 + "extern DOM::QualifiedName %sAttr;\n" % (i.replace("-", "_")))
0053     definition = definition + (" " * 8 + "DOM::QualifiedName %sAttr;\n" % (i.replace("-", "_")))
0054     initString = initString + ("            %sAttr = DOM::QualifiedName(ATTR_%s, DOM::emptyPrefixName);\n" % (i.replace("-", "_"), i.upper().replace("-", "_")))
0055 f.write("    }\n")
0056 f.write("    namespace HTMLNames {\n")
0057 f.write(" " * 8 + "extern DOM::QualifiedName classAttr;\n")
0058 definitionHtml = definitionHtml + (" " * 8 + "DOM::QualifiedName classAttr;\n")
0059 initString = initString + ("            WebCore::HTMLNames::classAttr = DOM::QualifiedName(ATTR_CLASS, DOM::emptyPrefixName);\n")
0060 f.write("    }\n")
0061 f.write("}\n")
0062 f.write("\n")
0063 f.write("#endif\n")
0064 
0065 
0066 ############################################################
0067 #generate XLinkAttrs
0068 ############################################################
0069 
0070 xlinkAttrs = []
0071 
0072 f = open("xlinkattrs.in", "r")
0073 for i in f.xreadlines():
0074     i = i.strip()
0075     if i == "": continue
0076     if i.startswith("#"): continue
0077     xlinkAttrs.append(i)
0078 f.close()
0079 
0080 f = open("XLinkNames.h", "w")
0081 f.write("#ifndef XLinkNames_H\n")
0082 f.write("#define XLinkNames_H\n")
0083 f.write("\n")
0084 f.write("#include \"misc/htmlnames.h\"\n")
0085 f.write("#include \"dom/QualifiedName.h\"\n")
0086 f.write("#include \"xml/Document.h\"\n")
0087 f.write("\n")
0088 f.write("namespace WebCore {\n")
0089 f.write("    namespace XLinkNames {\n")
0090 for i in xlinkAttrs:
0091     f.write(" " * 8 + "extern DOM::QualifiedName %sAttr;\n" % (i.replace("-", "_")))
0092     definitionXLink = definitionXLink + (" " * 8 + "DOM::QualifiedName %sAttr;\n" % (i.replace("-", "_")))
0093     initString = initString + ("            WebCore::XLinkNames::%sAttr = DOM::QualifiedName(ATTR_XLINK_%s, DOM::emptyPrefixName);\n" % (i.replace("-", "_"), i.upper().replace("-", "_")))
0094 f.write("    }\n")
0095 f.write("}\n")
0096 f.write("\n")
0097 f.write("#endif\n")
0098 f.close()
0099 
0100 ############################
0101 # generate init function
0102 ############################
0103 
0104 f = open("SVGNames.cpp", "w")
0105 f.write("#include \"svg/SVGNames.h\"\n\n")
0106 f.write("#include \"svg/XLinkNames.h\"\n\n")
0107 f.write("namespace WebCore {")
0108 f.write("""
0109     namespace HTMLNames {
0110 %s
0111     }
0112     namespace XLinkNames {
0113 %s
0114     }
0115     namespace SVGNames {
0116 %s
0117         void init()
0118         {
0119 %s
0120         }
0121     }\n""" % (definitionHtml, definitionXLink, definition, initString))
0122 f.write("}\n")
0123 f.write("\n")
0124 f.close()
0125