1 |
|
2 | var ref$, green, grey, red, reset, diff, renderDifferences, getColor;
|
3 | ref$ = require('chalk'), green = ref$.green, grey = ref$.grey, red = ref$.red, reset = ref$.reset;
|
4 | diff = require('diff');
|
5 | renderDifferences = function(differences){
|
6 | var part;
|
7 | return (function(){
|
8 | var i$, ref$, len$, results$ = [];
|
9 | for (i$ = 0, len$ = (ref$ = differences).length; i$ < len$; ++i$) {
|
10 | part = ref$[i$];
|
11 | results$.push(getColor(part)(part.value));
|
12 | }
|
13 | return results$;
|
14 | }()).join('');
|
15 | };
|
16 | getColor = function(part){
|
17 | switch (false) {
|
18 | case !part.added:
|
19 | return green;
|
20 | case !part.removed:
|
21 | return red;
|
22 | default:
|
23 | return grey;
|
24 | }
|
25 | };
|
26 | module.exports = function(actual, expected, done){
|
27 | var output, differences;
|
28 | switch (false) {
|
29 | case !!actual:
|
30 | throw new Error("JsDiffConsole: parameter 2 is falsy");
|
31 | case !!expected:
|
32 | throw new Error("JsDiffConsole: parameter 1 is falsy");
|
33 | case !!done:
|
34 | done = output;
|
35 | output = undefined;
|
36 | }
|
37 | differences = diff.diffJson(expected, actual);
|
38 | if (differences.length === 1) {
|
39 | return done();
|
40 | } else {
|
41 | return done("mismatching records:\n\n" + renderDifferences(differences));
|
42 | }
|
43 | }; |
\ | No newline at end of file |