Exemple #1
0
 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()
Exemple #2
0
    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)
Exemple #3
0
 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()
Exemple #4
0
    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()
Exemple #5
0
    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) 
Exemple #6
0
#!/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'))
Exemple #7
0
    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)