Add a convenient way to display string diffs

This commit is contained in:
Kovid Goyal 2015-11-22 10:41:46 +05:30
parent e6380faa01
commit b9e071e72b

View File

@ -124,6 +124,12 @@ def get_decoded_raw(name):
pass pass
return raw, syntax 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): def file_diff(left, right):
(raw1, syntax1), (raw2, syntax2) = map(get_decoded_raw, (left, right)) (raw1, syntax1), (raw2, syntax2) = map(get_decoded_raw, (left, right))
@ -373,6 +379,13 @@ class Diff(Dialog):
if identical: if identical:
self.reject() 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): def dir_diff(self, left, right, identical_msg=None):
with self: with self:
identical = self.apply_diff(identical_msg or _('The directories are identical'), *dir_diff(left, right)) identical = self.apply_diff(identical_msg or _('The directories are identical'), *dir_diff(left, right))