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