From 8fd7ae819606ad4a47d15bfdba676b0c0d982e1f Mon Sep 17 00:00:00 2001 From: vvakame Date: Thu, 10 Apr 2014 19:07:43 +0900 Subject: [PATCH] improve diff-tests.ts --- diff/diff-tests.ts | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/diff/diff-tests.ts b/diff/diff-tests.ts index 1588f5947..46d367bf6 100644 --- a/diff/diff-tests.ts +++ b/diff/diff-tests.ts @@ -12,3 +12,42 @@ diff.forEach(function (part) { part.removed ? '-' : ' '; console.log(mark + " " + part.value); }); + +// -------------------------- + +class LineDiffWithoutWhitespace extends jsdiff.Diff { + tokenize(value:string):any { + return value.split(/^/m); + } + + equals(left:string, right:string):boolean { + return left.trim() === right.trim(); + } +} + +var obj = new LineDiffWithoutWhitespace(true); +var diff = obj.diff(one, other); +printDiff(diff); + +function printDiff(diff:jsdiff.IDiffResult[]) { + function addLineHeader(decorator:string, str:string) { + return str.split("\n").map((line, index, array) => { + if (index === array.length - 1 && line === "") { + return line; + } else { + return decorator + line; + } + }).join("\n"); + } + + diff.forEach((part)=> { + if (part.added) { + console.log(addLineHeader("+", part.value)); + } else if (part.removed) { + console.log(addLineHeader("-", part.value)); + } else { + console.log(addLineHeader(" ", part.value)); + } + }); + +} \ No newline at end of file