From b9e071e72b09dab62e68d880d2732a137aa4ff55 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Sun, 22 Nov 2015 10:41:46 +0530 Subject: [PATCH] Add a convenient way to display string diffs --- src/calibre/gui2/tweak_book/diff/main.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/calibre/gui2/tweak_book/diff/main.py b/src/calibre/gui2/tweak_book/diff/main.py index 6015b48c5d..4448c42bcb 100644 --- a/src/calibre/gui2/tweak_book/diff/main.py +++ b/src/calibre/gui2/tweak_book/diff/main.py @@ -124,6 +124,12 @@ def get_decoded_raw(name): pass return raw, syntax +def string_diff(left, right, left_syntax=None, right_syntax=None, left_name='left', right_name='right'): + left, right = unicode(left), unicode(right) + cache = Cache() + cache.set_left(left_name, left), cache.set_right(right_name, right) + changed_names = {} if left == right else {left_name:right_name} + return cache, {left_name:left_syntax, right_name:right_syntax}, changed_names, {}, set(), set() def file_diff(left, right): (raw1, syntax1), (raw2, syntax2) = map(get_decoded_raw, (left, right)) @@ -373,6 +379,13 @@ class Diff(Dialog): if identical: self.reject() + def string_diff(self, left, right, **kw): + with self: + identical = self.apply_diff(kw.pop('identical_msg', None) or _('The strings are identical'), *string_diff(left, right, **kw)) + self.view.finalize() + if identical: + self.reject() + def dir_diff(self, left, right, identical_msg=None): with self: identical = self.apply_diff(identical_msg or _('The directories are identical'), *dir_diff(left, right))