import cgi class Tag(object): def __init__(self, name): super(Tag, self).__init__() self.n = name self.attrList = [] self.classString = "" self.classList = [] self.renderString = "" self.elementList = [] def __str__(self): return self.makeTag("") def __repr__(self): return str(self) def addAttr(key, value): key = cgi.escape(key) value = cgi.escape(value) self.attrList.append((key, value)) return self def addClass(self, name): name = cgi.escape(name) self.classList.append((self, name)) return self def attrs(self): self.renderString = "" self.classString = "" if len(self.classList) > 0: for i in range(len(self.attrList)): if self.attrList[i][0] == "class": self.attrList.pop(i) for elt in self.classList: self.classString+= str(elt) + " " self.attrList.insert(1,("class",self.classString.rstrip())) for (key, value) in self.attrList: self.renderString += key self.renderString += "=" self.renderString += "\"" self.renderString += value self.renderString += "\" " return self.renderString def makeTag(self, contents): if contents == "": return "<"+self.n+self.attrs()+"/>" else: if not self.attrList == []: return "<"+self.n+" "+self.attrs().rstrip()+">"+contents+"" else: return "<"+self.n+">"+contents+""