diff --git a/diff.js b/diff.js index 00fde392..022389dc 100644 --- a/diff.js +++ b/diff.js @@ -17,7 +17,7 @@ */ /** - * Modified by Piotr Kaminski. + * Modified by Piotr Kaminski and Sergei Vorobev. */ /** @@ -297,6 +297,9 @@ diff.prototype.diff_lineMode_ = function(text1, text2, deadline) { } diffs.pop(); // Remove the dummy entry at the end. + // Cleanup one more time after the rediff. + this.diff_cleanupSemantic(diffs); + return diffs; }; diff --git a/tests/diff_test.html b/tests/diff_test.html index a6af22cf..b0400d6d 100644 --- a/tests/diff_test.html +++ b/tests/diff_test.html @@ -89,6 +89,7 @@ 'testDiffCommonSuffix', 'testDiffCommonOverlap', 'testDiffHalfMatch', + 'testDiffLineMode', 'testDiffLinesToChars', 'testDiffCharsToLines', 'testDiffCleanupMerge', diff --git a/tests/diff_test.js b/tests/diff_test.js index c95c6366..34434e80 100644 --- a/tests/diff_test.js +++ b/tests/diff_test.js @@ -305,6 +305,22 @@ function testDiffCleanupSemanticLossless() { diffs = [[DIFF_EQUAL, 'AAA\r\n\r\nBBB'], [DIFF_INSERT, '\r\nDDD\r\n\r\nBBB'], [DIFF_EQUAL, '\r\nEEE']]; dmp.diff_cleanupSemanticLossless(diffs); assertEquivalent([[DIFF_EQUAL, 'AAA\r\n\r\n'], [DIFF_INSERT, 'BBB\r\nDDD\r\n\r\n'], [DIFF_EQUAL, 'BBB\r\nEEE']], diffs); + // Blank lines, next level + diffs = [ + [DIFF_EQUAL, 'websites:\n'], + [DIFF_DELETE, 'name: ADP\nurl: https://www.adp.com\ntfa: No\n\n'], + [DIFF_EQUAL, 'name: Adirondack Insurance Exchange\nurl: http://www.aie-ny.com/\nimg: adirondackinsurnaceexchange.png\n'], + [DIFF_INSERT, 'tfa: No\n\nname: ADP\nurl: https://www.adp.com\n'], + [DIFF_EQUAL, 'tfa: No\n\nname: Credit Karma'], + ]; + dmp.diff_cleanupSemanticLossless(diffs); + assertEquivalent([ + [DIFF_EQUAL, 'websites:\n'], + [DIFF_DELETE, 'name: ADP\nurl: https://www.adp.com\ntfa: No\n\n'], + [DIFF_EQUAL, 'name: Adirondack Insurance Exchange\nurl: http://www.aie-ny.com/\nimg: adirondackinsurnaceexchange.png\ntfa: No\n\n'], + [DIFF_INSERT, 'name: ADP\nurl: https://www.adp.com\ntfa: No\n\n'], + [DIFF_EQUAL, 'name: Credit Karma'], + ], diffs); // Line boundaries. diffs = [[DIFF_EQUAL, 'AAA\r\nBBB'], [DIFF_INSERT, ' DDD\r\nBBB'], [DIFF_EQUAL, ' EEE']]; @@ -635,6 +651,20 @@ function testDiffMain() { } } +function testDiffLineMode() { + // Test lines aligment (at the blank line border) in line-mode. + a = 'websites:\n - name: ADP\n url: https://www.adp.com\n twitter: adp\n img: adp.png\n tfa: No\n\n - name: Adirondack Insurance Exchange\n url: http://www.aie-ny.com/\n img: adirondackinsurnaceexchange.png\n tfa: No\n\n - name: Credit Karma\n url: https://www.creditkarma.com\n twitter: creditkarma'; + b = 'websites:\n - name: Adirondack Insurance Exchange\n url: http://www.aie-ny.com/\n img: adirondackinsurnaceexchange.png\n tfa: No\n\n - name: ADP\n url: https://www.adp.com\n twitter: adp\n img: adp.png\n tfa: No\n\n - name: Credit Karma\n url: https://www.creditkarma.com\n twitter: creditkarma'; + assertEquivalent( + [ + [DIFF_EQUAL, 'websites:\n'], + [DIFF_DELETE, ' - name: ADP\n url: https://www.adp.com\n twitter: adp\n img: adp.png\n tfa: No\n\n'], + [DIFF_EQUAL, ' - name: Adirondack Insurance Exchange\n url: http://www.aie-ny.com/\n img: adirondackinsurnaceexchange.png\n tfa: No\n\n'], + [DIFF_INSERT, ' - name: ADP\n url: https://www.adp.com\n twitter: adp\n img: adp.png\n tfa: No\n\n'], + [DIFF_EQUAL, ' - name: Credit Karma\n url: https://www.creditkarma.com\n twitter: creditkarma'] + ], dmp.diff_lineMode_(a, b) + ); +} // MATCH TEST FUNCTIONS diff --git a/tests/speedtest.html b/tests/speedtest.html index 77b79bc3..8b2e1696 100644 --- a/tests/speedtest.html +++ b/tests/speedtest.html @@ -20,7 +20,7 @@