Skip to content

Commit e59a2d6

Browse files
committed
added threshold of 8 to sematic chaff cleanup algorithm. Fixed bug where edit was not being inserted. Changed some styling of scroll bars.
1 parent c3bab8c commit e59a2d6

3 files changed

Lines changed: 28 additions & 4 deletions

File tree

src/LineDiff.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ SourceDiff.LineDiff = function() {
4848

4949
var leftAdd = findEditWithEndingPosition(_added, _common[i].rightPosition - 1);
5050
var rightAdd = findEditWithPosition(_added, _common[i].rightEndPosition + 1);
51-
if (editLength(leftDelete) + editLength(leftAdd) >= equalityLength
51+
if (equalityLength <= 8 && editLength(leftDelete) + editLength(leftAdd) >= equalityLength
5252
&& editLength(rightDelete) + editLength(rightAdd) >= equalityLength) {
5353
didMerge = true;
5454
if (leftDelete && rightDelete) {
@@ -103,7 +103,7 @@ SourceDiff.LineDiff = function() {
103103
} else if (position < edits[0].position) {
104104
edits.unshift(newEdit);
105105
} else {
106-
for (var i = edits.length - 1; i >= 1; i--) {
106+
for (var i = edits.length - 1; i >= 0; i--) {
107107
if (position > edits[i].position) {
108108
edits.splice(i + 1, 0, newEdit);
109109
break;

src/style.css

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ textarea {
4444

4545
.scroll {
4646
height: 600px;
47-
overflow-x: auto;
47+
overflow-x: scroll;
4848
overflow-y: auto;
4949
}
5050

test/DiffTests.js

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -314,4 +314,28 @@ test("LineDiff.addEdit", function() {
314314
lineDiff.cleanUp();
315315

316316
assertEquals([{position: 0, endPosition: 7}, {position: 11, endPosition: 11}, {position: 15, endPosition: 18}], lineDiff.deleted);
317-
});
317+
});
318+
319+
test("LineDiff correctly merges edits and removes semantic chaff", function() {
320+
var diff = new SourceDiff.Diff(false);
321+
322+
var lineDiff = diff.lineDiff('deletedText += "<br>";', 'for(var e = 0; e < results.added.length; e++) {');
323+
324+
lineDiff.cleanUp();
325+
326+
assertEquals([{position: 0, endPosition: 21}], lineDiff.deleted);
327+
assertEquals([{position: 0, endPosition: 46}], lineDiff.added);
328+
assertEquals([], lineDiff.common);
329+
});
330+
331+
test("LineDiff with blank lines", function() {
332+
var diff = new SourceDiff.Diff(false);
333+
334+
var diffFormatter = new SourceDiff.DiffFormatter(diff);
335+
336+
var formatted = diffFormatter.formattedDiff('\n', '*\n');
337+
338+
assertEquals('["<span class=\"deleted\"> </span><br> <br>","<span class=\"modified\"><span class=\"modified-light\">*</span></span><br> <br>"]', formatted);
339+
});
340+
341+
//I need a good way to handle blank lines that get padded with ' '.

0 commit comments

Comments
 (0)