@@ -309,73 +309,146 @@ def format(value)
309309 end
310310
311311 module Matchers
312- class ExpectedsForMultipleDiffs
313- SuperDiff . insert_singleton_overrides ( self ) do
314- # Add a key for different sides
315- def from ( expected )
316- return expected if self === expected
317-
318- text = colorizer . wrap ( "Diff:" , SuperDiff . configuration . header_color )
319-
320- if SuperDiff . configuration . key_enabled?
321- text +=
322- "\n \n " +
323- colorizer . wrap (
324- "┌ (Key) ──────────────────────────┐" ,
325- SuperDiff . configuration . border_color
326- ) + "\n " +
327- colorizer . wrap ( "│ " , SuperDiff . configuration . border_color ) +
328- colorizer . wrap (
329- "‹-› in expected, not in actual" ,
330- SuperDiff . configuration . expected_color
331- ) +
332- colorizer . wrap ( " │" , SuperDiff . configuration . border_color ) +
333- "\n " +
334- colorizer . wrap ( "│ " , SuperDiff . configuration . border_color ) +
335- colorizer . wrap (
336- "‹+› in actual, not in expected" ,
337- SuperDiff . configuration . actual_color
338- ) +
339- colorizer . wrap ( " │" , SuperDiff . configuration . border_color ) +
340- "\n " +
341- colorizer . wrap ( "│ " , SuperDiff . configuration . border_color ) +
342- "‹ › in both expected and actual" +
343- colorizer . wrap ( " │" , SuperDiff . configuration . border_color ) +
344- "\n " +
345- colorizer . wrap (
346- "└─────────────────────────────────┘" ,
347- SuperDiff . configuration . border_color
348- )
312+ if SuperDiff ::RSpec . rspec_version < "3.13.0"
313+ class ExpectedsForMultipleDiffs
314+ SuperDiff . insert_singleton_overrides ( self ) do
315+ # Add a key for different sides
316+ def from ( expected )
317+ return expected if self === expected
318+
319+ text = colorizer . wrap ( "Diff:" , SuperDiff . configuration . header_color )
320+
321+ if SuperDiff . configuration . key_enabled?
322+ text +=
323+ "\n \n " +
324+ colorizer . wrap (
325+ "┌ (Key) ──────────────────────────┐" ,
326+ SuperDiff . configuration . border_color
327+ ) + "\n " +
328+ colorizer . wrap ( "│ " , SuperDiff . configuration . border_color ) +
329+ colorizer . wrap (
330+ "‹-› in expected, not in actual" ,
331+ SuperDiff . configuration . expected_color
332+ ) +
333+ colorizer . wrap ( " │" , SuperDiff . configuration . border_color ) +
334+ "\n " +
335+ colorizer . wrap ( "│ " , SuperDiff . configuration . border_color ) +
336+ colorizer . wrap (
337+ "‹+› in actual, not in expected" ,
338+ SuperDiff . configuration . actual_color
339+ ) +
340+ colorizer . wrap ( " │" , SuperDiff . configuration . border_color ) +
341+ "\n " +
342+ colorizer . wrap ( "│ " , SuperDiff . configuration . border_color ) +
343+ "‹ › in both expected and actual" +
344+ colorizer . wrap ( " │" , SuperDiff . configuration . border_color ) +
345+ "\n " +
346+ colorizer . wrap (
347+ "└─────────────────────────────────┘" ,
348+ SuperDiff . configuration . border_color
349+ )
350+ end
351+
352+ new ( [ [ expected , text ] ] )
349353 end
350354
351- new ( [ [ expected , text ] ] )
355+ def colorizer
356+ RSpec ::Core ::Formatters ::ConsoleCodes
357+ end
352358 end
353359
354- def colorizer
355- RSpec ::Core ::Formatters ::ConsoleCodes
360+ SuperDiff . insert_overrides ( self ) do
361+ # Add an extra line break
362+ def message_with_diff ( message , differ , actual )
363+ diff = diffs ( differ , actual )
364+
365+ diff . empty? ? message : "#{ message . rstrip } \n \n #{ diff } "
366+ end
367+
368+ private
369+
370+ # Add extra line breaks in between diffs, and colorize the word "Diff"
371+ def diffs ( differ , actual )
372+ @expected_list
373+ . map do |( expected , diff_label ) |
374+ diff = differ . diff ( actual , expected )
375+ next if diff . strip . empty?
376+ diff_label + diff
377+ end
378+ . compact
379+ . join ( "\n \n " )
380+ end
356381 end
357382 end
383+ else
384+ class MultiMatcherDiff
385+ SuperDiff . insert_singleton_overrides ( self ) do
386+ # Add a key for different sides
387+ def from ( expected , actual )
388+ return expected if self === expected
389+
390+ text = colorizer . wrap ( "Diff:" , SuperDiff . configuration . header_color )
391+
392+ if SuperDiff . configuration . key_enabled?
393+ text +=
394+ "\n \n " +
395+ colorizer . wrap (
396+ "┌ (Key) ──────────────────────────┐" ,
397+ SuperDiff . configuration . border_color
398+ ) + "\n " +
399+ colorizer . wrap ( "│ " , SuperDiff . configuration . border_color ) +
400+ colorizer . wrap (
401+ "‹-› in expected, not in actual" ,
402+ SuperDiff . configuration . expected_color
403+ ) +
404+ colorizer . wrap ( " │" , SuperDiff . configuration . border_color ) +
405+ "\n " +
406+ colorizer . wrap ( "│ " , SuperDiff . configuration . border_color ) +
407+ colorizer . wrap (
408+ "‹+› in actual, not in expected" ,
409+ SuperDiff . configuration . actual_color
410+ ) +
411+ colorizer . wrap ( " │" , SuperDiff . configuration . border_color ) +
412+ "\n " +
413+ colorizer . wrap ( "│ " , SuperDiff . configuration . border_color ) +
414+ "‹ › in both expected and actual" +
415+ colorizer . wrap ( " │" , SuperDiff . configuration . border_color ) +
416+ "\n " +
417+ colorizer . wrap (
418+ "└─────────────────────────────────┘" ,
419+ SuperDiff . configuration . border_color
420+ )
421+ end
358422
359- SuperDiff . insert_overrides ( self ) do
360- # Add an extra line break
361- def message_with_diff ( message , differ , actual )
362- diff = diffs ( differ , actual )
423+ new ( [ [ expected , text , actual ] ] )
424+ end
363425
364- diff . empty? ? message : "#{ message . rstrip } \n \n #{ diff } "
426+ def colorizer
427+ RSpec ::Core ::Formatters ::ConsoleCodes
428+ end
365429 end
366430
367- private
431+ SuperDiff . insert_overrides ( self ) do
432+ # Add an extra line break
433+ def message_with_diff ( message , differ )
434+ diff = diffs ( differ )
435+
436+ diff . empty? ? message : "#{ message . rstrip } \n \n #{ diff } "
437+ end
368438
369- # Add extra line breaks in between diffs, and colorize the word "Diff"
370- def diffs ( differ , actual )
371- @expected_list
372- . map do |( expected , diff_label ) |
373- diff = differ . diff ( actual , expected )
374- next if diff . strip . empty?
375- diff_label + diff
376- end
377- . compact
378- . join ( "\n \n " )
439+ private
440+
441+ # Add extra line breaks in between diffs, and colorize the word "Diff"
442+ def diffs ( differ )
443+ @expected_list
444+ . map do |( expected , diff_label , actual ) |
445+ diff = differ . diff ( actual , expected )
446+ next if diff . strip . empty?
447+ diff_label + diff
448+ end
449+ . compact
450+ . join ( "\n \n " )
451+ end
379452 end
380453 end
381454 end
0 commit comments