var result = document.getElementById('result');
function changed() {
- var diff = Diff[window.diffType](a.textContent, b.textContent);
var fragment = document.createDocumentFragment();
+ var diff;
+ if (window.diffType === 'diffPatch') {
+ // We contort the patch into a similar data structure to that returned by diffChars,
+ // diffWords, etc so that the same rendering code below can work on both.
+ var pastHunkHeader = false;
+ diff = Diff.createTwoFilesPatch('a.txt', 'b.txt', a.textContent, b.textContent)
+ .split('\n')
+ .map(function(entry) {
+ const result = {
+ value: entry + '\n',
+ };
+ if (entry.startsWith('@@')) {
+ result.chunkHeader = true;
+ pastHunkHeader = true;
+ } else if (pastHunkHeader) {
+ if (entry.startsWith('-')) {
+ result.removed = true;
+ } else if (entry.startsWith('+')) {
+ result.added = true;
+ }
+ }
+ return result;
+ });
+ } else {
+ diff = Diff[window.diffType](a.textContent, b.textContent);
+ }
+
for (var i=0; i < diff.length; i++) {
if (diff[i].added && diff[i + 1] && diff[i + 1].removed) {
@@ -48,6 +75,10 @@