Diff Utils 라이브러리는 diff 계산, 패치 적용, 통합 diff 생성 또는 구문 분석, 나중에 쉽게 표시할 수 있도록 diff 출력 생성(나란히 보기 등) 등 텍스트 간의 비교 작업을 수행하기 위한 OpenSource 라이브러리입니다.
이 라이브러리를 구축한 주된 이유는 diff 파일로 작업하는 동안 필요한 모든 일반적인 항목을 포함하는 사용하기 쉬운 라이브러리가 부족했기 때문입니다. 원래는 JRCS 라이브러리에서 영감을 얻었으며 diff 모듈의 멋진 디자인입니다.
이는 원래 Google Code Archive의 java-diff-utils 포크입니다.
실제 릴리스 버전의 Javadoc: 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 "