Skip to content

Commit 30ee6fd

Browse files
committed
Refactor as do_quote_map_value
1 parent 1177c50 commit 30ee6fd

File tree

1 file changed

+13
-12
lines changed

1 file changed

+13
-12
lines changed

lib/elixir/src/elixir_quote.erl

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -165,13 +165,13 @@ do_escape(BitString, _) when is_bitstring(BitString) ->
165165

166166
do_escape(Map, Q) when is_map(Map) ->
167167
TT =
168-
[case extract_value_ref(V) of
169-
Ref when is_reference(Ref) ->
168+
[case do_quote_map_value(V, Q) of
169+
{ok, QV} ->
170+
{do_quote(K, Q), QV};
171+
{error, Ref} ->
170172
argument_error(<<('Elixir.Kernel':inspect(Map, []))/binary, " contains a reference (",
171173
('Elixir.Kernel':inspect(Ref, []))/binary, ") and therefore it cannot be escaped ",
172-
"(it must be defined within a function instead). ", (bad_escape_hint())/binary>>);
173-
_ ->
174-
{do_quote(K, Q), do_quote(V, Q)}
174+
"(it must be defined within a function instead). ", (bad_escape_hint())/binary>>)
175175
end || {K, V} <- lists:sort(maps:to_list(Map))],
176176
{'%{}', [], TT};
177177

@@ -206,15 +206,16 @@ do_escape(Fun, _) when is_function(Fun) ->
206206
do_escape(Other, _) ->
207207
bad_escape(Other).
208208

209-
extract_value_ref(Ref) when is_reference(Ref) -> Ref;
210-
extract_value_ref(Tuple) when is_tuple(Tuple) -> extract_value_ref_from_tuple(Tuple, 1);
211-
extract_value_ref(_) -> nil.
209+
do_quote_map_value(Ref, _Q) when is_reference(Ref) -> {error, Ref};
210+
do_quote_map_value(Tuple, Q) when is_tuple(Tuple) -> do_quote_map_value_tuple(Tuple, Q, 1);
211+
do_quote_map_value(Value, Q) -> {ok, do_quote(Value, Q)}.
212212

213-
extract_value_ref_from_tuple(Tuple, Index) when Index > tuple_size(Tuple) -> nil;
214-
extract_value_ref_from_tuple(Tuple, Index) ->
213+
do_quote_map_value_tuple(Tuple, Q, Index) when Index > tuple_size(Tuple) ->
214+
{ok, do_quote(Tuple, Q)};
215+
do_quote_map_value_tuple(Tuple, Q, Index) ->
215216
case element(Index, Tuple) of
216-
Ref when is_reference(Ref) -> Ref;
217-
_ -> extract_value_ref_from_tuple(Tuple, Index + 1)
217+
Ref when is_reference(Ref) -> {error, Ref};
218+
_ -> do_quote_map_value_tuple(Tuple, Q, Index + 1)
218219
end.
219220

220221
bad_escape(Arg) ->

0 commit comments

Comments
 (0)