1212// See the License for the specific language governing permissions and
1313// limitations under the License.
1414
15- use anstyle:: { Color , Style } ;
15+
16+ use ansi_term:: { Color , Style } ;
1617
1718use crate :: matcher:: { Matcher , MatcherResult } ;
1819use crate :: matcher_support:: edit_distance;
@@ -180,31 +181,35 @@ pub(super) fn create_diff_reversed(
180181 }
181182}
182183
183- const EXTRA_LEFT_STYLE : Style =
184- Style :: new ( ) . bold ( ) . fg_color ( Some ( Color :: Ansi ( anstyle:: AnsiColor :: Red ) ) ) ;
185- const EXTRA_RIGHT_STYLE : Style =
186- Style :: new ( ) . bold ( ) . fg_color ( Some ( Color :: Ansi ( anstyle:: AnsiColor :: Blue ) ) ) ;
187- const COMMENT_STYLE : Style = Style :: new ( ) . italic ( ) ;
184+ fn extra_left_style ( ) -> Style {
185+ Style :: new ( ) . fg ( Color :: Red ) . bold ( )
186+ }
187+ fn extra_right_style ( ) -> Style {
188+ Style :: new ( ) . fg ( Color :: Blue ) . bold ( )
189+ }
190+ fn comment_style ( ) -> Style {
191+ Style :: new ( ) . italic ( )
192+ }
188193
189194fn edit_list_summary ( edit_list : & [ edit_distance:: Edit < & str > ] ) -> String {
190195 let mut summary = String :: new ( ) ;
191196 // Use to collect common line and compress them.
192197 let mut common_line_buffer = vec ! [ ] ;
193198 for edit in edit_list {
194- let ( start , line) = match edit {
199+ let ( style , line) = match edit {
195200 edit_distance:: Edit :: Both ( left) => {
196201 common_line_buffer. push ( * left) ;
197202 continue ;
198203 }
199- edit_distance:: Edit :: ExtraLeft ( left) => ( EXTRA_LEFT_STYLE , * left) ,
200- edit_distance:: Edit :: ExtraRight ( right) => ( EXTRA_RIGHT_STYLE , * right) ,
204+ edit_distance:: Edit :: ExtraLeft ( left) => ( extra_left_style ( ) , * left) ,
205+ edit_distance:: Edit :: ExtraRight ( right) => ( extra_right_style ( ) , * right) ,
201206 edit_distance:: Edit :: AdditionalLeft => {
202- ( COMMENT_STYLE , "<---- remaining lines omitted ---->" )
207+ ( comment_style ( ) , "<---- remaining lines omitted ---->" )
203208 }
204209 } ;
205210 summary. push_str ( & compress_common_lines ( std:: mem:: take ( & mut common_line_buffer) ) ) ;
206211
207- write ! ( & mut summary, "\n {}{line}{} " , start . render ( ) , start . render_reset ( ) ) . unwrap ( ) ;
212+ write ! ( & mut summary, "\n {}" , style . paint ( line ) ) . unwrap ( ) ;
208213 }
209214 summary. push_str ( & compress_common_lines ( common_line_buffer) ) ;
210215
@@ -233,9 +238,9 @@ fn compress_common_lines(common_lines: Vec<&str>) -> String {
233238
234239 truncated_lines. push_str ( & format ! (
235240 "\n {}<---- {} common lines omitted ---->{}" ,
236- COMMENT_STYLE . render ( ) ,
241+ comment_style ( ) . prefix ( ) ,
237242 common_lines. len( ) - 2 * COMMON_LINES_CONTEXT_SIZE ,
238- COMMENT_STYLE . render_reset ( ) ,
243+ comment_style ( ) . suffix ( ) ,
239244 ) ) ;
240245
241246 for line in & common_lines[ common_lines. len ( ) - COMMON_LINES_CONTEXT_SIZE ..common_lines. len ( ) ] {
@@ -304,10 +309,10 @@ mod tests {
304309 which isn't equal to Strukt { int: 321, string: "someone" }
305310 Difference:
306311 Strukt {
307- [1m[ 31m int: 123,[0m
308- [1m[ 34m int: 321,[0m
309- [1m[ 31m string: "something",[0m
310- [1m[ 34m string: "someone",[0m
312+ [1; 31m int: 123,[0m
313+ [1; 34m int: 321,[0m
314+ [1; 31m string: "something",[0m
315+ [1; 34m string: "someone",[0m
311316 }
312317 "# } ) ) )
313318 )
@@ -327,9 +332,9 @@ mod tests {
327332 Difference:
328333 [
329334 1,
330- [1m[ 31m 2,[0m
335+ [1; 31m 2,[0m
331336 3,
332- [1m[ 34m 4,[0m
337+ [1; 34m 4,[0m
333338 ]
334339 "# } ) ) )
335340 )
@@ -349,9 +354,9 @@ mod tests {
349354 Difference:
350355 [
351356 1,
352- [1m[ 31m 2,[0m
357+ [1; 31m 2,[0m
353358 3,
354- [1m[ 31m 4,[0m
359+ [1; 31m 4,[0m
355360 5,
356361 ]
357362 "# } ) ) )
@@ -367,15 +372,15 @@ mod tests {
367372 "
368373 Difference:
369374 [
370- [1m[ 31m 1,[0m
371- [1m[ 31m 2,[0m
375+ [1; 31m 1,[0m
376+ [1; 31m 2,[0m
372377 3,
373378 4,
374379 [3m<---- 43 common lines omitted ---->[0m
375380 48,
376381 49,
377- [1m[ 34m 50,[0m
378- [1m[ 34m 51,[0m
382+ [1; 34m 50,[0m
383+ [1; 34m 51,[0m
379384 ]" } ) ) )
380385 )
381386 }
@@ -389,15 +394,15 @@ mod tests {
389394 "
390395 Difference:
391396 [
392- [1m[ 31m 1,[0m
393- [1m[ 31m 2,[0m
397+ [1; 31m 1,[0m
398+ [1; 31m 2,[0m
394399 3,
395400 4,
396401 5,
397402 6,
398403 7,
399- [1m[ 34m 8,[0m
400- [1m[ 34m 9,[0m
404+ [1; 34m 8,[0m
405+ [1; 34m 9,[0m
401406 ]" } ) ) )
402407 )
403408 }
@@ -415,8 +420,8 @@ mod tests {
415420 [3m<---- 46 common lines omitted ---->[0m
416421 48,
417422 49,
418- [1m[ 34m 50,[0m
419- [1m[ 34m 51,[0m
423+ [1; 34m 50,[0m
424+ [1; 34m 51,[0m
420425 ]" } ) ) )
421426 )
422427 }
@@ -430,8 +435,8 @@ mod tests {
430435 "
431436 Difference:
432437 [
433- [1m[ 31m 1,[0m
434- [1m[ 31m 2,[0m
438+ [1; 31m 1,[0m
439+ [1; 31m 2,[0m
435440 3,
436441 4,
437442 [3m<---- 46 common lines omitted ---->[0m
@@ -481,8 +486,8 @@ mod tests {
481486 err( displays_as( contains_substring( indoc!(
482487 r#"
483488 First line
484- [1m[ 31mSecond line[0m
485- [1m[ 34mSecond lines[0m
489+ [1; 31mSecond line[0m
490+ [1; 34mSecond lines[0m
486491 Third line
487492 "#
488493 ) ) ) )
0 commit comments