Index: Source/devtools/front_end/sources/RevisionHistoryView.js |
diff --git a/Source/devtools/front_end/sources/RevisionHistoryView.js b/Source/devtools/front_end/sources/RevisionHistoryView.js |
index ae7dd7ac8d7e12bae5604cd5a92f9ca2d0635ed3..b2b8e6e56fe0bf4a741c339c1903dad10c26eabc 100644 |
--- a/Source/devtools/front_end/sources/RevisionHistoryView.js |
+++ b/Source/devtools/front_end/sources/RevisionHistoryView.js |
@@ -240,40 +240,32 @@ WebInspector.RevisionHistoryTreeElement.prototype = { |
*/ |
function step2(baseContent, newContent) |
{ |
- var baseLines = difflib.stringAsLines(baseContent); |
- var newLines = difflib.stringAsLines(newContent); |
- var sm = new difflib.SequenceMatcher(baseLines, newLines); |
- var opcodes = sm.get_opcodes(); |
+ var baseLines = baseContent.split("\n"); |
+ var newLines = newContent.split("\n"); |
+ var opcodes = WebInspector.Diff.lineDiff(baseLines, newLines); |
var lastWasSeparator = false; |
+ var baseLineNumber = 0; |
+ var newLineNumber = 0; |
for (var idx = 0; idx < opcodes.length; idx++) { |
- var code = opcodes[idx]; |
- var change = code[0]; |
- var b = code[1]; |
- var be = code[2]; |
- var n = code[3]; |
- var ne = code[4]; |
- var rowCount = Math.max(be - b, ne - n); |
- for (var i = 0; i < rowCount; i++) { |
- if (change === "delete" || (change === "replace" && b < be)) { |
- var lineNumber = b++; |
- this._createLine(lineNumber, null, baseLines[lineNumber], "removed"); |
- lastWasSeparator = false; |
- } |
- |
- if (change === "insert" || (change === "replace" && n < ne)) { |
- var lineNumber = n++; |
- this._createLine(null, lineNumber, newLines[lineNumber], "added"); |
- lastWasSeparator = false; |
- } |
- |
- if (change === "equal") { |
- b++; |
- n++; |
- if (!lastWasSeparator) |
- this._createLine(null, null, " \u2026", "separator"); |
- lastWasSeparator = true; |
- } |
+ var code = opcodes[idx][0]; |
+ var rowCount = opcodes[idx][1].length; |
+ if (code === WebInspector.Diff.Operation.Equal) { |
+ baseLineNumber += rowCount; |
+ newLineNumber += rowCount; |
+ if (!lastWasSeparator) |
+ this._createLine(null, null, " \u2026", "separator"); |
+ lastWasSeparator = true; |
+ } else if (code === WebInspector.Diff.Operation.Delete) { |
+ lastWasSeparator = false; |
+ for (var i = 0; i < rowCount; ++i) |
+ this._createLine(baseLineNumber + i, null, baseLines[baseLineNumber + i], "removed"); |
+ baseLineNumber += rowCount; |
+ } else if (code === WebInspector.Diff.Operation.Insert) { |
+ lastWasSeparator = false; |
+ for (var i = 0; i < rowCount; ++i) |
+ this._createLine(null, newLineNumber + i, newLines[newLineNumber + i], "added"); |
+ newLineNumber += rowCount; |
} |
} |
} |