مكتبة Diff Utils هي مكتبة مفتوحة المصدر لإجراء عمليات المقارنة بين النصوص: حساب الفروق، وتطبيق التصحيحات، وإنشاء اختلافات موحدة أو تحليلها، وإنشاء مخرجات فرق للعرض المستقبلي السهل (مثل العرض جنبًا إلى جنب) وما إلى ذلك.
كان السبب الرئيسي لإنشاء هذه المكتبة هو عدم وجود مكتبات سهلة الاستخدام تحتوي على جميع الأشياء المعتادة التي تحتاجها أثناء العمل مع الملفات المختلفة. في الأصل كانت مستوحاة من مكتبة JRCS وتصميمها الجميل لوحدة الفرق.
هذا في الأصل شوكة لأدوات java-diff-utils من Google Code Archive.
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 ());
هذا اختبار الجملة للدفيفيوتيلز .
إنتاج عرض جنبًا إلى جنب للاختلافات المحسوبة.
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 . |
هذا هو السطر الثاني. | هذا هو السطر الثاني. |
ولكن يمكن استبداله بسهولة بأي شيء آخر أفضل لتسليم النصوص الخاصة بك. لدي خطة لإضافة تنفيذ بعض في المستقبل.
تم مؤخرًا دمج عملية checkstyle في عملية الإنشاء. يتبع Java-diff-utils اصطلاح تنسيق Sun Java. لا توجد علامات تبويب مسموح بها. استخدم المسافات.
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 <>());
}
هذا جزء صالح من كود المصدر:
ما عليك سوى إضافة الكود أدناه إلى تبعياتك المخضرمة:
< 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 "