La bibliothèque Diff Utils est une bibliothèque OpenSource permettant d'effectuer des opérations de comparaison entre des textes : calculer des différences, appliquer des correctifs, générer des différences unifiées ou les analyser, générer une sortie de comparaison pour un affichage futur facile (comme une vue côte à côte), etc.
La principale raison de créer cette bibliothèque était le manque de bibliothèques faciles à utiliser avec tous les éléments habituels dont vous avez besoin lorsque vous travaillez avec des fichiers diff. À l'origine, il a été inspiré par la bibliothèque JRCS et c'est un joli design de module diff.
Il s'agit à l'origine d'un fork de java-diff-utils de Google Code Archive.
Javadocs de la version actuelle : JavaDocs java-diff-utils
Regardez ici pour trouver des informations et des exemples plus utiles.
Ces deux sorties sont générées à l'aide de ce java-diff-utils. Le code source peut également être trouvé sur la page Exemples :
Produire un one liner comprenant toutes les informations sur les différences.
//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 ());
Ceci est un essai phrase pour les diffutils .
Produire une vue côte à côte des différences calculées.
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 | nouveau |
---|---|
Ceci est un essai | Ceci est un test pour diffutils . |
C'est la deuxième ligne. | C'est la deuxième ligne. |
Mais il peut facilement être remplacé par tout autre, plus adapté à la gestion de vos textes. J'ai l'intention d'en ajouter la mise en œuvre à l'avenir.
Récemment, un processus de contrôle de style a été intégré au processus de construction. java-diff-utils suit la convention de format Sun Java. Aucun onglet n'est autorisé. Utilisez des espaces.
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 <>());
}
Il s'agit d'un morceau de code source valide :
Ajoutez simplement le code ci-dessous à vos dépendances maven :
< dependency >
< groupId >io.github.java-diff-utils</ groupId >
< artifactId >java-diff-utils</ artifactId >
< version >4.15</ version >
</ dependency >
ou en utilisant gradle :
// https://mvnrepository.com/artifact/io.github.java-diff-utils/java-diff-utils
implementation " io.github.java-diff-utils:java-diff-utils:4.12 "