Die Diff Utils-Bibliothek ist eine OpenSource-Bibliothek zum Durchführen von Vergleichsoperationen zwischen Texten: Berechnen von Diffs, Anwenden von Patches, Generieren einheitlicher Diffs oder deren Analyse, Generieren von Diff-Ausgaben für eine einfache zukünftige Anzeige (z. B. Nebeneinanderansicht) und so weiter.
Der Hauptgrund für die Erstellung dieser Bibliothek war der Mangel an benutzerfreundlichen Bibliotheken mit allen üblichen Dingen, die Sie beim Arbeiten mit Diff-Dateien benötigen. Ursprünglich wurde es von der JRCS-Bibliothek und dem schönen Design des Diff-Moduls inspiriert.
Dies ist ursprünglich ein Fork von Java-Diff-Utils aus dem Google Code Archive.
Javadocs der aktuellen Release-Version: JavaDocs java-diff-utils
Weitere hilfreiche Informationen und Beispiele finden Sie hier.
Diese beiden Ausgaben werden mit diesen Java-Diff-Utils generiert. Den Quellcode finden Sie auch auf der Beispielseite :
Erstellen eines Einzeilers mit allen Informationen zu den Unterschieden.
//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 ());
Dies ist ein Test Satz für Diffutile .
Erstellen einer Nebeneinanderansicht der berechneten Unterschiede.
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 () + "|" );
}
Original | neu |
---|---|
Dies ist ein Test | Dies ist ein Test für Diffutils . |
Dies ist die zweite Zeile. | Dies ist die zweite Zeile. |
Sie kann aber problemlos durch eine andere ersetzt werden, die sich besser für die Übermittlung Ihrer Texte eignet. Ich habe vor, die Implementierung einiger davon in Zukunft hinzuzufügen.
Kürzlich wurde ein Checkstyle-Prozess in den Build-Prozess integriert. java-diff-utils folgt der Sun-Java-Formatkonvention. Es sind keine TABs erlaubt. Verwenden Sie Leerzeichen.
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 <>());
}
Dies ist ein gültiger Quellcode:
Fügen Sie einfach den folgenden Code zu Ihren Maven-Abhängigkeiten hinzu:
< dependency >
< groupId >io.github.java-diff-utils</ groupId >
< artifactId >java-diff-utils</ artifactId >
< version >4.15</ version >
</ dependency >
oder mit Gradle:
// https://mvnrepository.com/artifact/io.github.java-diff-utils/java-diff-utils
implementation " io.github.java-diff-utils:java-diff-utils:4.12 "