使用删除线将diff转换为markdown?

Nor*_*sey 10 algorithm diff markdown

我想将diff(在Markdown文件上)的输出转换为Markdown with <strike><em>tags,这样我就可以看到从文档的新版本中删除或添加的内容.(这种处理对于法律文件来说非常普遍.)

希望输出的示例:

为什么我们学习编程语言 ,为了...

困难之一是diff的输出是面向行的,我希望看到单个词的差异.有没有人建议使用什么算法,或建立什么软件?

Ada*_*eld 18

使用wdiff.它已经完成了你正在寻找的逐字比较; 将其输出转换为markdown只需要几个简单的正则表达式.

例如:

$ cat foo
Why do we study programming languages?  Not in order to
$ cat bar
We study programming languages not in order to
$ wdiff foo bar
[-Why do we-]{+We+} study programming [-languages?  Not-] {+languages not+} in order to
$ wdiff foo bar | sed 's|\[-|<em>|g;s|-]|</em>|g;s|{+|<strike>|g;s|+}|</strike>|g'
<em>Why do we</em><strike>We</strike> study programming <em>languages?  Not</em> <strike>languages not</strike> in order to
Run Code Online (Sandbox Code Playgroud)

编辑:实际上,wdiff有一些选项可以让它更容易:

$ wdiff -w '<em>' -x '</em>' -y '<strike>' -z '</strike>' foo bar
<em>Why do we</em><strike>We</strike> study programming <em>languages?  Not</em> <strike>languages not</strike> in order to
Run Code Online (Sandbox Code Playgroud)


net*_*etj 7

使用Markdown-Diff将单词diff注释到原始文档.它在Markdown中格式化wdiffgit --word-diff输出,因此您可以使用自己喜欢的Markdown预览器或编译器来查看更改.(Markdown-Diff由我自己编写,灵感来自Adam Rosenfield的回答.)