java diff utils
va-diff-utils-parent-4.15
Diff Utils 库是一个开源库,用于执行文本之间的比较操作:计算差异、应用补丁、生成统一差异或解析它们、生成差异输出以方便将来显示(如并排视图)等。
构建这个库的主要原因是缺乏易于使用的库,其中包含处理 diff 文件时所需的所有常用内容。最初它的灵感来自 JRCS 库,它的 diff 模块设计得很好。
这最初是来自 Google Code Archive 的 java-diff-utils 的一个分支。
实际发行版本的Javadocs:JavaDocs java-diff-utils
请在此处查找更多有用的信息和示例。
这两个输出是使用 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 的测试。 |
这是第二行。 | 这是第二行。 |
但它可以很容易地被任何其他更适合处理文本的东西所取代。我计划将来添加一些实施。
最近,检查样式流程已集成到构建流程中。 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 "