私はdiff-lcsgemを使用して、2つのHTMLコンテンツ本体の違いを出力しています。これがサンプルコンテンツです。
バージョン1:
<p>Paragraph one. Sentence one.</p>
<p>Paragraph two. Another sentence.</p>
<p>Paragraph three. I dare you to change me!</p>
バージョン2:
<p>Paragraph one. Sentence two.</p>
<p>Paragraph two. Another sentence.</p>
<p>Paragraph three. I dare you to update me!</p>
これを使用する:
seq1 = @versionOne.body
seq2 = @versionTwo.body
seq = Diff::LCS.diff(seq1, seq2)
あなたはこのモンスターを手に入れます:
seq => [[#<Diff::LCS::Change:0x0000000be539f8 @action="-", @position=27, @element="t">, #<Diff::LCS::Change:0x0000000be538b8 @action="-", @position=28, @element="w">], [#<Diff::LCS::Change:0x0000000be53520 @action="+", @position=28, @element="n">, #<Diff::LCS::Change:0x0000000be53408 @action="+", @position=29, @element="e">], [#<Diff::LCS::Change:0x0000000be3aa70 @action="-", @position=110, @element="u">, #<Diff::LCS::Change:0x0000000be3a840 @action="-", @position=111, @element="p">, #<Diff::LCS::Change:0x0000000be34ee0 @action="-", @position=112, @element="d">, #<Diff::LCS::Change:0x0000000be349e0 @action="+", @position=110, @element="c">, #<Diff::LCS::Change:0x0000000be348a0 @action="+", @position=111, @element="h">], [#<Diff::LCS::Change:0x0000000be34580 @action="-", @position=114, @element="t">, #<Diff::LCS::Change:0x0000000be34210 @action="+", @position=113, @element="n">, #<Diff::LCS::Change:0x0000000be33f40 @action="+", @position=114, @element="g">], [#<Diff::LCS::Change:0x0000000be331d0 @action="-", @position=124, @element="">]]
ドキュメントsdiff
にあるその他のメソッドの出力も同様に恐ろしいものです。(配列の)配列の構造は理解していますが、人間が読める形式でスタイルを設定できる方法で違いを示す簡単な方法が必要です。
PS-誰かがdiff-lcs
タグを作成したい場合は、それをいただければ幸いです。