@@ -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,74 @@ var createReporter = function createReporter() {
108
112
} ) ;
109
113
} ;
110
114
115
+ function decodeNewlines ( _x3 ) {
116
+ var _again = true ;
117
+
118
+ _function: while ( _again ) {
119
+ var str = _x3 ;
120
+ _again = false ;
121
+
122
+ if ( str . match ( / ( [ ^ \\ ] ) \\ n / g) ) {
123
+ _x3 = str . replace ( / ( [ ^ \\ ] ) \\ n / g, '$1\n' ) ;
124
+ _again = true ;
125
+ continue _function;
126
+ }
127
+ return str ;
128
+ }
129
+ }
130
+
131
+ var diffStrings = function diffStrings ( actual , expected ) {
132
+ var padding = ' ' ;
133
+ var line = 1 ;
134
+ var diff_ = _pdiff2 [ 'default' ] . addLineNumbers ( _pdiff2 [ 'default' ] . diff ( decodeNewlines ( actual ) , decodeNewlines ( expected ) ) ) ;
135
+ var diff = _pdiff2 [ 'default' ] . extractDiff ( diff_ , line ) ;
136
+ var maxLine = diff_ . length ;
137
+ var digit = String ( maxLine ) . length ;
138
+ var spaces = '' ;
139
+ for ( var i = 0 ; i < digit - 1 ; i ++ ) {
140
+ spaces += ' ' ;
141
+ } console . log ( '' ) ;
142
+ diff . forEach ( function ( group , i ) {
143
+ group . forEach ( function ( delta ) {
144
+ var text = padding ;
145
+ // Add line numbers
146
+ if ( delta . lineNumberOfLhs != undefined ) {
147
+ text += _chalk2 [ 'default' ] . magenta ( ( spaces + ( delta . lineNumberOfLhs + 1 ) ) . substr ( - digit ) ) ;
148
+ } else {
149
+ text += spaces + _chalk2 [ 'default' ] . magenta ( '-' ) ;
150
+ }
151
+ text += ' ' ;
152
+ if ( delta . lineNumberOfRhs != undefined ) {
153
+ text += _chalk2 [ 'default' ] . magenta ( ( spaces + ( delta . lineNumberOfRhs + 1 ) ) . substr ( - digit ) ) ;
154
+ } else {
155
+ text += spaces + _chalk2 [ 'default' ] . magenta ( '-' ) ;
156
+ }
157
+ text += ' ' ;
158
+
159
+ // Add the value of this line
160
+ delta . values . forEach ( function ( value ) {
161
+ if ( value . added ) {
162
+ text += _chalk2 [ 'default' ] . green . inverse ( value . value ) ;
163
+ return ;
164
+ }
165
+ if ( value . removed ) {
166
+ text += _chalk2 [ 'default' ] . red . inverse ( value . value ) ;
167
+ return ;
168
+ }
169
+ text += _chalk2 [ 'default' ] . dim ( value . value ) ;
170
+ } ) ;
171
+
172
+ // Ouput the delta
173
+ console . log ( text ) ;
174
+ } ) ;
175
+
176
+ if ( i != diff . length - 1 ) {
177
+ console . log ( padding + _chalk2 [ 'default' ] . dim ( '...' ) ) ;
178
+ }
179
+ } ) ;
180
+ console . log ( '' ) ;
181
+ } ;
182
+
111
183
var _assert$diag = assert . diag ;
112
184
var at = _assert$diag . at ;
113
185
var actual = _assert$diag . actual ;
@@ -148,9 +220,7 @@ var createReporter = function createReporter() {
148
220
} else if ( expected === 'undefined' && actual === 'undefined' ) {
149
221
;
150
222
} else if ( expected_type === 'string' ) {
151
- var compared = ( 0 , _diff . diffWords ) ( actual , expected ) . map ( writeDiff ) . join ( '' ) ;
152
-
153
- println ( compared , 4 ) ;
223
+ diffStrings ( actual , expected ) ;
154
224
} else {
155
225
println ( _chalk2 [ 'default' ] . red . inverse ( actual ) + _chalk2 [ 'default' ] . green . inverse ( expected ) , 4 ) ;
156
226
}
0 commit comments