@@ -36,6 +36,10 @@ var _jsondiffpatch = require('jsondiffpatch');
36
36
37
37
var _jsondiffpatch2 = _interopRequireDefault ( _jsondiffpatch ) ;
38
38
39
+ var _pdiff = require ( 'pdiff' ) ;
40
+
41
+ var _pdiff2 = _interopRequireDefault ( _pdiff ) ;
42
+
39
43
var INDENT = ' ' ;
40
44
var FIG_TICK = _figures2 [ 'default' ] . tick ;
41
45
var FIG_CROSS = _figures2 [ 'default' ] . cross ;
@@ -108,6 +112,58 @@ var createReporter = function createReporter() {
108
112
} ) ;
109
113
} ;
110
114
115
+ var diffStrings = function diffStrings ( actual , expected ) {
116
+ var padding = ' ' ;
117
+ var line = 1 ;
118
+ var diff_ = _pdiff2 [ 'default' ] . addLineNumbers ( _pdiff2 [ 'default' ] . diff ( actual . replace ( / \\ n / g, '\n' ) , expected . replace ( / \\ n / g, '\n' ) ) ) ;
119
+ var diff = _pdiff2 [ 'default' ] . extractDiff ( diff_ , line ) ;
120
+ var maxLine = diff_ . length ;
121
+ var digit = String ( maxLine ) . length ;
122
+ var spaces = '' ;
123
+ for ( var i = 0 ; i < digit - 1 ; i ++ ) {
124
+ spaces += ' ' ;
125
+ } console . log ( '' ) ;
126
+ diff . forEach ( function ( group , i ) {
127
+ group . forEach ( function ( delta ) {
128
+ var text = padding ;
129
+ // Add line numbers
130
+ if ( delta . lineNumberOfLhs != undefined ) {
131
+ text += _chalk2 [ 'default' ] . magenta ( ( spaces + ( delta . lineNumberOfLhs + 1 ) ) . substr ( - digit ) ) ;
132
+ } else {
133
+ text += spaces + _chalk2 [ 'default' ] . magenta ( '-' ) ;
134
+ }
135
+ text += ' ' ;
136
+ if ( delta . lineNumberOfRhs != undefined ) {
137
+ text += _chalk2 [ 'default' ] . magenta ( ( spaces + ( delta . lineNumberOfRhs + 1 ) ) . substr ( - digit ) ) ;
138
+ } else {
139
+ text += spaces + _chalk2 [ 'default' ] . magenta ( '-' ) ;
140
+ }
141
+ text += ' ' ;
142
+
143
+ // Add the value of this line
144
+ delta . values . forEach ( function ( value ) {
145
+ if ( value . added ) {
146
+ text += _chalk2 [ 'default' ] . green . inverse ( value . value ) ;
147
+ return ;
148
+ }
149
+ if ( value . removed ) {
150
+ text += _chalk2 [ 'default' ] . red . inverse ( value . value ) ;
151
+ return ;
152
+ }
153
+ text += _chalk2 [ 'default' ] . dim ( value . value ) ;
154
+ } ) ;
155
+
156
+ // Ouput the delta
157
+ console . log ( text ) ;
158
+ } ) ;
159
+
160
+ if ( i != diff . length - 1 ) {
161
+ console . log ( padding + _chalk2 [ 'default' ] . dim ( '...' ) ) ;
162
+ }
163
+ } ) ;
164
+ console . log ( '' ) ;
165
+ } ;
166
+
111
167
var _assert$diag = assert . diag ;
112
168
var at = _assert$diag . at ;
113
169
var actual = _assert$diag . actual ;
@@ -148,9 +204,7 @@ var createReporter = function createReporter() {
148
204
} else if ( expected === 'undefined' && actual === 'undefined' ) {
149
205
;
150
206
} else if ( expected_type === 'string' ) {
151
- var compared = ( 0 , _diff . diffWords ) ( actual , expected ) . map ( writeDiff ) . join ( '' ) ;
152
-
153
- println ( compared , 4 ) ;
207
+ diffStrings ( actual , expected ) ;
154
208
} else {
155
209
println ( _chalk2 [ 'default' ] . red . inverse ( actual ) + _chalk2 [ 'default' ] . green . inverse ( expected ) , 4 ) ;
156
210
}
0 commit comments