プログラミングにおいて、テキストの差分(ディファレンス)を把握することはかなり重要です。
特に、コードの変更点や追跡をする場合などすごく役に立ちます。
RubyではDiffyというgemを使うことによってStringの差分を出力することができます。
Diffy gemとは?
DiffyはRubyで使える差分チェック用のライブラリです。
テキスト間の差分を検出し、その結果を様々な形式で出力できます。
使い方として、まずはインストール
$ gem install diffy
例
require "Diffy"
list_1 = <<-NASHI
hello this.text first Time
next_page chang
NASHI
list_2 = <<-NASHI
hello this.text second Time
this_page changed
NASHI
#差分をテキストで出力
puts Diffy::Diff.new(list_1,list_2)
=>結果
-hello this.text first Time
-next_page chang
+hello this.text second Time
+this_page changed
#HTML形式で差分を出力
puts Diffy::Diff.new(list_1,list_2).to_s(:html_simple)
=>結果
<div class="diff">
<ul>
<li class="del"><del>hello this.text first Time</del></li>
<li class="del"><del>next_page chang</del></li>
<li class="ins"><ins>hello this.text second Time</ins></li>
<li class="ins"><ins>this_page changed</ins></li>
</ul>
</div>
このコードでは「list1」と「list2」のテキスト間の差分を計算し、結果を出力しています。
出力形式のカスタマイズ
Diffyでは差分の出力形式をカスタマイズすることも可能で
「:collor」
変更箇所に色をつけて表示
「:html」
HTML形式で差分を表示
「:text」
プレーンテキストで差分を表示
例
diff = Diffy::Diff.new(list1,list2).to_s(:html)
puts diff
HTML形式で表示した場合です。