Skip to content

Commit f2dad7d

Browse files
committed
Improve edit script construction for root level strings
1 parent 1224aa9 commit f2dad7d

File tree

1 file changed

+12
-15
lines changed

1 file changed

+12
-15
lines changed

lib/ex_unit/lib/ex_unit/diff.ex

Lines changed: 12 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)