@@ -18,13 +18,7 @@ defmodule ExUnit.Diff do
1818 # Binaries
1919 def script ( left , right ) when is_binary ( left ) and is_binary ( right ) do
2020 if String . printable? ( left ) and String . printable? ( right ) do
21- length1 = String . length ( left )
22- length2 = String . length ( right )
23- if bag_distance ( left , right ) / max ( length1 , length2 ) <= 0.6 do
24- left = Inspect.BitString . escape ( left , ?\" )
25- right = Inspect.BitString . escape ( right , ?\" )
26- [ { :eq , "\" " } , script_string ( left , right ) , { :eq , "\" " } ]
27- end
21+ script_string ( left , right , ?\" )
2822 end
2923 end
3024
@@ -47,14 +41,7 @@ defmodule ExUnit.Diff do
4741 # Char lists and lists
4842 def script ( left , right ) when is_list ( left ) and is_list ( right ) do
4943 if Inspect.List . printable? ( left ) and Inspect.List . printable? ( right ) do
50- left = List . to_string ( left ) |> Inspect.BitString . escape ( ?' )
51- right = List . to_string ( right ) |> Inspect.BitString . escape ( ?' )
52- length1 = String . length ( left )
53- length2 = String . length ( left )
54-
55- if bag_distance ( left , right ) / max ( length1 , length2 ) <= 0.6 do
56- [ { :eq , "'" } , script_string ( left , right ) , { :eq , "'" } ]
57- end
44+ script_string ( List . to_string ( left ) , List . to_string ( right ) , ?' )
5845 else
5946 keyword? = Inspect.List . keyword? ( left ) and Inspect.List . keyword? ( right )
6047 script_list ( left , right , keyword? , [ ] )
@@ -78,6 +65,16 @@ defmodule ExUnit.Diff do
7865
7966 def script ( _left , _right ) , do: nil
8067
68+ defp script_string ( string1 , string2 , token ) do
69+ length1 = String . length ( string1 )
70+ length2 = String . length ( string2 )
71+ if bag_distance ( string1 , string2 ) / max ( length1 , length2 ) <= 0.6 do
72+ string1 = Inspect.BitString . escape ( string1 , token )
73+ string2 = Inspect.BitString . escape ( string2 , token )
74+ [ { :eq , << token >> } , script_string ( string1 , string2 ) , { :eq , << token >> } ]
75+ end
76+ end
77+
8178 defp script_string ( string1 , string2 ) do
8279 String . myers_difference ( string1 , string2 )
8380 end
0 commit comments