java diff utils
va-diff-utils-parent-4.15
Diff Utils ライブラリは、テキスト間の比較操作を実行するためのオープンソース ライブラリです。つまり、差分の計算、パッチの適用、統合された差分の生成または解析、将来の表示 (並べて表示など) を容易にするための差分出力の生成などです。
このライブラリを構築する主な理由は、diff ファイルを操作するときに必要な通常のものをすべて備えた使いやすいライブラリが不足していたことでした。元々は JRCS ライブラリからインスピレーションを得たもので、diff モジュールのデザインが素晴らしいです。
これは元々、Google Code Archive からの java-diff-utils のフォークです。
実際のリリース バージョンの Javadoc: JavaDocs java-diff-utils
さらに役立つ情報と例については、ここを参照してください。
これら 2 つの出力は、この java-diff-utils を使用して生成されます。ソース コードは、サンプルページにもあります。
すべての相違点情報を含むワンライナーを作成します。
//create a configured DiffRowGenerator
DiffRowGenerator generator = DiffRowGenerator . create ()
. showInlineDiffs ( true )
. mergeOriginalRevised ( true )
. inlineDiffByWord ( true )
. oldTag ( f -> "~" ) //introduce markdown style for strikethrough
. newTag ( f -> "**" ) //introduce markdown style for bold
. build ();
//compute the differences for two test texts.
List < DiffRow > rows = generator . generateDiffRows (
Arrays . asList ( "This is a test senctence." ),
Arrays . asList ( "This is a test for diffutils." ));
System . out . println ( rows . get ( 0 ). getOldLine ());
これはテストです文diffutils 用。
計算された差分を並べて表示します。
DiffRowGenerator generator = DiffRowGenerator . create ()
. showInlineDiffs ( true )
. inlineDiffByWord ( true )
. oldTag ( f -> "~" )
. newTag ( f -> "**" )
. build ();
List < DiffRow > rows = generator . generateDiffRows (
Arrays . asList ( "This is a test senctence." , "This is the second line." , "And here is the finish." ),
Arrays . asList ( "This is a test for diffutils." , "This is the second line." ));
System . out . println ( "|original|new|" );
System . out . println ( "|--------|---|" );
for ( DiffRow row : rows ) {
System . out . println ( "|" + row . getOldLine () + "|" + row . getNewLine () + "|" );
}
オリジナル | 新しい |
---|---|
これはテストです | これはdiffutils のテストです。 |
これは 2 行目です。 | これは 2 行目です。 |
ただし、テキストを渡すのに適した他のものに簡単に置き換えることができます。将来的にはいくつかの実装を追加する予定です。
最近、checkstyle プロセスがビルド プロセスに統合されました。 java-diff-utils は、Sun Java 形式の規則に従います。 TAB は使用できません。スペースを使用します。
public static < T > Patch < T > diff ( List < T > original , List < T > revised ,
BiPredicate < T , T > equalizer ) throws DiffException {
if ( equalizer != null ) {
return DiffUtils . diff ( original , revised ,
new MyersDiff <>( equalizer ));
}
return DiffUtils . diff ( original , revised , new MyersDiff <>());
}
これは有効なソース コードです。
以下のコードを Maven の依存関係に追加するだけです。
< dependency >
< groupId >io.github.java-diff-utils</ groupId >
< artifactId >java-diff-utils</ artifactId >
< version >4.15</ version >
</ dependency >
またはgradleを使用して:
// https://mvnrepository.com/artifact/io.github.java-diff-utils/java-diff-utils
implementation " io.github.java-diff-utils:java-diff-utils:4.12 "