2013年10月14日月曜日

groovyとjava-diff-utilsで2つのファイルの違いを表示する

groovyとjava-diff-utilsで2つのファイルの違いを表示するには、以下のコードを実行します。
@Grab(group='com.googlecode.java-diff-utils', module='diffutils', version='1.3.0')
import difflib.*

// ファイル1の各行を読み込み
def lines1 = []
new File("test1.txt").withReader { reader ->
  while((line = reader.readLine()) != null){ lines1 << line }
}

// ファイル2の各行を読み込み
def lines2 = []
new File("test1b.txt").withReader { reader ->
  while((line = reader.readLine()) != null){ lines2 << line }
}

// Diff実行
drg = new DiffRowGenerator.Builder().build()
rows = drg.generateDiffRows(lines1, lines2)
rows.eachWithIndex { row, idx ->
  switch(row.getTag()){
  case DiffRow.Tag.INSERT:
    println "INSERTED:${idx}:${row.getNewLine()}"
    break
  case DiffRow.Tag.DELETE:
    println "DELETED:${idx}:${row.getOldLine()}"
    break
  case DiffRow.Tag.CHANGE:
    println "BEFORE:${idx}:${row.getOldLine()}"
    println "AFTER:${idx}:${row.getNewLine()}"
    break
  default:
    println "${idx}:${row.getOldLine()}"
  }
}


動作環境
groovy 2.1.7, JDK7 update40

0 件のコメント:

コメントを投稿