diff --git a/gen.py b/gen.py index 98a28849..c179121c 100755 --- a/gen.py +++ b/gen.py @@ -65,9 +65,12 @@ def executeCommand( cmd ): error, desc = commands.getstatusoutput( cmd ) return error, desc + "\n" + "executed cmd: " + cmd +## creates a HTML table (for the human reader) and XML table (for bots) class XEPTable: - def __init__(self, filename): + def __init__(self, filename, shortXMLfilename): self.filename = filename + self.shortXMLfilename = shortXMLfilename + try: self.tableFile = parse(filename) except: @@ -88,14 +91,26 @@ class XEPTable: Date ''') self.tableFile.getElementsByTagName("table")[0].appendChild(header.getElementsByTagName("tr")[0]) - + + try: + self.botsFile = parse(shortXMLfilename) + except: + impl = getDOMImplementation() + self.tableFile = impl.createDocument(None, "xeps", None) + def save(self): f = open(self.filename, "wb") self.tableFile.getElementsByTagName("table")[0].normalize() f.write(self.tableFile.toxml()) f.close() + + f = open(self.shortXMLfilename, "wb") + self.tableFile.getElementsByTagName("xeps")[0].normalize() + f.write(self.tableFile.toxml()) + f.close() def setXEP(self, info): + ## set for HTML table rows = self.tableFile.getElementsByTagName("tr") xeprow = 0 for row in rows: @@ -130,6 +145,43 @@ class XEPTable: col = parseString("" + info.getDate() + "") xeprow.appendChild(col.getElementsByTagName("td")[0]) + ## set for bots file + xeps = self.botsFile.getElementsByTagName("xep") + xep = 0 + for xeps_xep in xeps: + if xeps_xep.getElementsByTagName("number")[0].firstChild.data == info.getNr(): + xep = xeps_xep + break + + if xep == 0: + xep = self.botsFile.createElement("xep") + self.botsFile.getElementsByTagName("xeps")[0].appendChild(xep) + self.botsFile.getElementsByTagName("xeps")[0].appendChild(self.botsFile.createTextNode(''' +''')) + else: + while(xep.hasChildNodes()): + xep.removeChild(xep.firstChild) + + child = parseString("" + info.getNr() + "") + xep.appendChild(child.getElementsByTagName("number")) + + child = parseString("" + info.getTitle() + "") + xep.appendChild(child.getElementsByTagName("name")) + + child = parseString("" + info.getType() + "") + xep.appendChild(child.getElementsByTagName("type")) + + child = parseString("" + info.getStatus() + "") + xep.appendChild(child.getElementsByTagName("status")) + + child = parseString("" + info.getDate() + "") + xep.appendChild(child.getElementsByTagName("updated")) + + child = parseString("" + info.getShortname() + "") + xep.appendChild(child.getElementsByTagName("shortname")) + + child = parseString("" + info.getAbstract() + "") + xep.appendChild(child.getElementsByTagName("abstract")) def filebase( filename ): return os.path.splitext(os.path.basename(filename))[0] @@ -255,7 +307,7 @@ def buildXEP( filename ): else: print "Building " + filename + " (FAST MODE)" - x = XEPTable(CONFIGPATH + "/extensions.xml") + x = XEPTable(CONFIGPATH + "/extensions.xml", XEPPATH + "/xeps.xml") xinfo = XEPInfo(xepfilepath, False) x.setXEP( xinfo ) x.save() diff --git a/xepinfo.py b/xepinfo.py index a987938c..de3e133a 100644 --- a/xepinfo.py +++ b/xepinfo.py @@ -49,8 +49,9 @@ class XEPInfo: titleNode = (headerNode.getElementsByTagName("title")[0]) self.title = getText(titleNode.childNodes) self.nr = getText((headerNode.getElementsByTagName("number")[0]).childNodes) + self.shortname = getText((headerNode.getElementsByTagName("shortname")[0]).childNodes) abstractNode = (headerNode.getElementsByTagName("abstract")[0]) - abstract = getText(abstractNode.childNodes) + self.abstract = getText(abstractNode.childNodes) statusNode = (headerNode.getElementsByTagName("status")[0]) self.status = getText(statusNode.childNodes) self.type = getText((headerNode.getElementsByTagName("type")[0]).childNodes) @@ -80,6 +81,12 @@ class XEPInfo: def getTitle(self): return self.title + def getShortname(self): + return self.shortname + + def getAbstract(self): + return self.abstract + def getStatus(self): return self.status