Ruby で差分をチェックするgem Diffy

プログラミングにおいて、テキストの差分(ディファレンス)を把握することはかなり重要です。
特に、コードの変更点や追跡をする場合などすごく役に立ちます。

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形式で表示した場合です。