@@ -18,13 +18,7 @@ defmodule ExUnit.Diff do
18
18
# Binaries
19
19
def script ( left , right ) when is_binary ( left ) and is_binary ( right ) do
20
20
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 , ?\" )
28
22
end
29
23
end
30
24
@@ -47,14 +41,7 @@ defmodule ExUnit.Diff do
47
41
# Char lists and lists
48
42
def script ( left , right ) when is_list ( left ) and is_list ( right ) do
49
43
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 ) , ?' )
58
45
else
59
46
keyword? = Inspect.List . keyword? ( left ) and Inspect.List . keyword? ( right )
60
47
script_list ( left , right , keyword? , [ ] )
@@ -78,6 +65,16 @@ defmodule ExUnit.Diff do
78
65
79
66
def script ( _left , _right ) , do: nil
80
67
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
+
81
78
defp script_string ( string1 , string2 ) do
82
79
String . myers_difference ( string1 , string2 )
83
80
end
0 commit comments