我需要以人类可读的格式打印文本(代码)的内联差异(例如:不是机器优化的)。
我的平台是Javascript(主node.js,浏览器)。我有自己的打印机/样式器,但在生成正确的差异更改时遇到问题。
重要的是人类直观的变化:因此对每行的变化有很大的偏见,而随机碎片的变化则非常低。
看起来不错的非JS diff渲染器的示例是Tortoise SVN / GIT中的那个和github.com上的diff渲染器。我相信github上的那个读取一个“标准”补丁格式,但我确信还有一些逻辑可以将它变成一个漂亮的内联差异。
我试过的一些模块:
diff
(https://npmjs.org/package/diff)经典,但它有不自然的线条和字符或字符差异组合。 (这在[{1}}中使用,但它有缺陷)
mocha
(https://npmjs.org/package/chardiff)基于chardiff
,但它有一个专为人类可读性而设计的语义过滤器:它看起来更好但仍然提供零碎的单字母更改(经典差异不会)。
diff
(http://code.google.com/p/google-diff-match-patch),这很有希望,但仍然不是100%(仍有一些反直觉的差异)。
我想我需要使用其中一个模块作为组件(每行等)来组装一些东西,但我不确定该怎么做。
这是一个解决的问题吗?