Javascript 在Rails中区分两个文本并打印人类可读的HTML输出

Javascript 在Rails中区分两个文本并打印人类可读的HTML输出,javascript,ruby-on-rails,ruby,diff,Javascript,Ruby On Rails,Ruby,Diff,我正在使用paper_trail gem自动创建我的页面模型的版本历史记录 在页面#show中,我显示如下版本: 最重要的元素是diff,它显示字段的先前版本和当前显示版本之间的差异,例如内容。它看起来像GitHub上的一个diff,并且使用进行插入,使用进行删除,标记良好 可悲的是,目前,我使用在用户浏览器中运行的JavaScript库生成了这个差异。我这样做是因为我没有找到一颗红宝石或类似的宝石,它以同样优雅的方式做同样的事情 嗯,我发现了和,但这两个gem的差异并没有那么优雅:Diffe

我正在使用paper_trail gem自动创建我的
页面
模型的版本历史记录

页面#show
中,我显示如下版本:

最重要的元素是diff,它显示字段的先前版本和当前显示版本之间的差异,例如
内容
。它看起来像GitHub上的一个diff,并且使用
进行插入,使用
进行删除,标记良好

可悲的是,目前,我使用在用户浏览器中运行的JavaScript库生成了这个差异。我这样做是因为我没有找到一颗红宝石或类似的宝石,它以同样优雅的方式做同样的事情

嗯,我发现了和,但这两个gem的差异并没有那么优雅:Difference需要手动知道是按行、字还是字符进行差异(而使用的JavaScript会自动决定这一点,并使用这些选项的组合,这对我来说非常直观),Differy没有提供这方面的选项。我不知道JavaScript是如何工作的,但它指出“Myer的diff算法”在内部使用:

该库实现了Myer的diff算法,该算法通常被认为是最好的通用diff。diff算法周围有一层pre-diff加速和post-diff清理,从而提高了性能和输出质量

您可以在这里尝试:

可以使用以下两个字符串查看页面两个版本的典型示例:

This is the about page.

Put markdowwn formated content here.

其结果如下:

这种方法的问题在于它是在浏览器中运行的,所以我不能再在Rails应用程序中修改生成的代码了。因此,我想知道是否有一种简单的方法可以使用类似于
diff
的命令行工具来获得类似的diff结果?甚至
git
也可能有用吗

This is the about page.

Put markdown formatted here content.

A [link to page 11](11). And another one: [](11).