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