def get_texts_nested(self,prep=False,compare_to=None): if self.data is None and len(self.children) > 0 : sub = [] for c in self.children: sub.extend(c.get_texts_nested(prep,compare_to)) rt = [{"id":self.identifier,"tag":self.xml.tag,"data":sub,"meta":self.meta}] else: if self.data is None: self.data = '' if compare_to is None: data = self.data else: print "diffing" el = compare_to.xml.find(".//{0}[@id='{1}']".format(self.xml.tag,self.identifier)) if(el is not None): original = self.__class__(el) do = original.data if do == None: do = "" ds = self.data if ds == None: ds = "" data = simplediff.html_diff(do,ds) else: print "element not found" data = simplediff.html_diff("",self.data) if prep: data = utils.prep_for_display(data) rt = [{"id":self.identifier,"tag":self.xml.tag,"data":data,"meta":self.meta}] return rt
def zipem(texts,forms): try: assert len(texts) == len(forms) except: raise Exception("yep {0} != {1}".format(len(texts),len(forms))) rt = [] for i in xrange(len(texts)): if not isinstance(texts[i]["data"],unicode) and not isinstance(texts[i]["data"],str): #it's a list data = zipem(texts[i]["data"],forms[i]["data"]) texts[i].update({"data":data}) rt.append(texts[i]) else: texts[i].update({"form":utils.prep_for_display(forms[i]["data"])}) texts[i]["data"] = utils.prep_for_display(texts[i]["data"]) rt.append(texts[i]) return rt