def _merge(view, size, text, edit): def ss(start, end): return view.substr(sublime.Region(start, end)) dmp = diff_match_patch() diffs = dmp.diff_main(ss(0, size), text) dmp.diff_cleanupEfficiency(diffs) i = 0 dirty = False for d in diffs: k, s = d l = len(s) if k == 0: # match l = len(s) if ss(i, i + l) != s: raise MergeException('mismatch', dirty) i += l else: dirty = True if k > 0: # insert view.insert(edit, i, s) i += l else: # delete if ss(i, i + l) != s: raise MergeException('mismatch', dirty) view.erase(edit, sublime.Region(i, i + l)) return dirty
def _merge(view, size, text, edit): def ss(start, end): return view.substr(sublime.Region(start, end)) dmp = diff_match_patch() diffs = dmp.diff_main(ss(0, size), text) dmp.diff_cleanupEfficiency(diffs) i = 0 dirty = False for d in diffs: k, s = d l = len(s) if k == 0: # match l = len(s) if ss(i, i+l) != s: raise MergeException('mismatch', dirty) i += l else: dirty = True if k > 0: # insert view.insert(edit, i, s) i += l else: # delete if ss(i, i+l) != s: raise MergeException('mismatch', dirty) view.erase(edit, sublime.Region(i, i+l)) return dirty
def main(): text1 = open("speedtest1.txt").read() text2 = open("speedtest2.txt").read() dmp = dmp_module.diff_match_patch() dmp.Diff_Timeout = 0.0 # Execute one reverse diff as a warmup. dmp.diff_main(text2, text1, False) gc.collect() start_time = time.time() dmp.diff_main(text1, text2, False) end_time = time.time() print("Elapsed time: %f" % (end_time - start_time))
smtp.sendmail(from_addr, to_addrs, msg_root.as_string()) smtp.close() def set_style(text, type): style = 'font-family: monospace; font-size: 12px;' if type == 'remove': style += 'background-color: #FDD; text-decoration: line-through; color: #333; opacity: 0.25;' elif type == 'insert': style += 'background-color: #DFD; color: #333;' else: style += 'color: #333;' return '<span style="%s">%s</span>' % (style, text) dmp = diff_match_patch() def diff(file1, file2): lines = open(file1).read().split('\n') old = ''.join(['<pre>%s</pre>' % line for line in lines]) lines = open(file2).read().split('\n') new = ''.join(['<pre>%s</pre>' % line for line in lines]) diffs = dmp.diff_main(old, new, checklines=False) html = [] for diff in diffs: state, text = diff if state == -1: html.append(set_style(text, 'remove')) elif state == 1: html.append(set_style(text, 'insert')) else: