示例#1
0
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
示例#2
0
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
示例#3
0
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))
示例#4
0
文件: worker.py 项目: AloneRoad/cmd
    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: