3

在使用 CodeMirror 的merge插件时,我有兴趣了解LHS 和 RHS 中发现的差异计数textarea

有没有办法显示计数?

4

2 回答 2

2

您可以通过使用插件所依赖的diff-match-patch库自己实现它。merge编写一个updateDiffCount使用以下算法的函数:

  1. 获取您正在比较的两个文本版本作为字符串。
  2. 调用diff_main字符串和diff_cleanupSemantic结果,如本代码示例所示
  3. 循环遍历结果并计算第一个元素不是的结果数组0
  4. 将页面上某些元素的文本内容设置为该计数。

updateDiffCount每当编辑 中的文本时textarea,在延迟后运行此函数。

于 2013-09-19T18:25:37.437 回答
1

我在 Rory 的解决方案中添加了一些代码,以使其更易于实现:

var text1 = document.getElementById('text1').value;
var text2 = document.getElementById('text2').value;

var d = dmp.diff_main(text1, text2);

// you can optionally add some cleanup
// dmp.diff_cleanupSemantic(d); or dmp.diff_cleanupEfficiency(d);

alert('Difference count: ' + d.filter(l => l[0] === -1).length);
于 2021-03-04T08:03:49.523 回答