def slotButtonShowDiff(self): """Called when the user clicks Show Difference.""" docs = self.selectedDocuments() or self.allDocuments() if not docs: return d = docs[0] if documentwatcher.DocumentWatcher.instance(d).isdeleted(): return filename = d.url().toLocalFile() try: with open(filename) as f: disktext = util.decode(f.read()) except (IOError, OSError): return currenttext = d.toPlainText() html = htmldiff.htmldiff( currenttext, disktext, _("Current Document"), _("Document on Disk"), numlines=5) dlg = widgets.dialog.Dialog(self, buttons=('close',)) view = QTextBrowser(lineWrapMode=QTextBrowser.NoWrap) view.setHtml(html) dlg.setMainWidget(view) dlg.setWindowTitle(app.caption("Differences")) dlg.setMessage(_( "Document: {url}\n" "Difference between the current document and the file on disk:").format( url=filename)) dlg.setWindowModality(Qt.NonModal) dlg.setAttribute(Qt.WA_QuitOnClose, False) dlg.setAttribute(Qt.WA_DeleteOnClose) qutil.saveDialogSize(dlg, "externalchanges/diff/dialog/size", QSize(600, 300)) dlg.show()
def check(self, name): data = self.getSource() fnRef = self.fnRef(name) fnOrig = self.fnOrig(name) # save references only? if self.save: util.mkdir(self.config.REF_DIR) util.write(fnRef, data) else: # compare assert os.path.exists(fnRef), "Cannot compare without reference file: %s" % fnRef util.mkdir(self.outputDir) # first save original file util.write(fnOrig, data) ref = self.cleanup(util.read(fnRef)) data = self.cleanup(data) # htmldiff result = htmldiff.htmldiff(ref, data, True) util.write(self.fnHtmlDiff(name), result) self.scenario.results[name] = self._eval_diff(result) # difflib linesRef = ref.splitlines() linesData = data.splitlines() result = difflib.HtmlDiff(wrapcolumn=80).make_file(linesRef, linesData, fnRef, fnOrig, context=True) util.write(self.fnDiffLib(name), result)
def setConvertedText(self, text=''): self._convertedtext = text self.buttons.button(QDialogButtonBox.Ok).setEnabled(bool(text)) if text: self.diff.setHtml(htmldiff.htmldiff( self._text, text, _("Current Document"), _("Converted Document"), wrapcolumn=100)) else: self.diff.clear()
def slotButtonShowDiff(self): """Called when the user clicks Show Difference.""" docs = self.selectedDocuments() or self.allDocuments() if not docs: return d = docs[0] if documentwatcher.DocumentWatcher.instance(d).isdeleted(): return filename = d.url().toLocalFile() try: with open(filename, 'rb') as f: disktext = util.decode(f.read()) except (IOError, OSError): return currenttext = d.toPlainText() html = htmldiff.htmldiff(currenttext, disktext, _("Current Document"), _("Document on Disk"), numlines=5) dlg = widgets.dialog.Dialog(self, buttons=('close', )) view = QTextBrowser(lineWrapMode=QTextBrowser.NoWrap) view.setHtml(html) dlg.setMainWidget(view) dlg.setWindowTitle(app.caption("Differences")) dlg.setMessage( _("Document: {url}\n" "Difference between the current document and the file on disk:"). format(url=filename)) dlg.setWindowModality(Qt.NonModal) dlg.setAttribute(Qt.WA_QuitOnClose, False) dlg.setAttribute(Qt.WA_DeleteOnClose) qutil.saveDialogSize(dlg, "externalchanges/diff/dialog/size", QSize(600, 300)) dlg.show()
def displayDiff(self): diff = self.request.form info("%r" % diff) context = self.context.aq_inner # here calculate the diff data # the_macro = self.version_diff_template.macros['main'] #content = self.header_macros(the_macro=the_macro, **vars(diff)) #content = force_unicode(content, 'utf') versions = [] for key in diff.keys(): if key.startswith('version_'): versions.append(diff[key]) versions.sort() rep_tool = getToolByName(context, 'portal_repository') v1_body = rep_tool.retrieve(context, versions[0]).object.getText().decode('utf-8') if versions[1] != 'current': v2_body = rep_tool.retrieve(context, versions[1]).object.getText().decode('utf-8') else: v2_body = context.getText().decode('utf-8') # 补充空格让只懂英文的htmldiff可以工作 v1 = rx_chinese.sub(r'\1\0 ', v1_body) v2 = rx_chinese.sub(r'\1\0 ', v2_body) #print v1 #print v2 content = htmldiff(v1, v2).replace('\0 ' ,'') #print content #content = htmldiff(v1_body, v2_body) content = force_unicode(content, 'utf') ksscore = self.getCommandSet('core') ksscore.replaceInnerHTML( ksscore.getHtmlIdSelector('body-wrapper'), content)
#!/usr/bin/env python #coding: utf-8 import sys from htmldiff import htmldiff sys.stdout.write(htmldiff(sys.argv[1], sys.argv[2]).encode('utf-8'))
def diffDatastreamVersions(self, PID, DsID, version1date, version2date): """return the difference between two versions of a datastream""" source1 = self.accessByFedoraURL(PID, DsID, version1date)["stream"] source2 = self.accessByFedoraURL(PID, DsID, version2date)["stream"] return htmldiff(source1, source2)