Skip to content

Commit 3e03f17

Browse files
committed
refactor: Refactor API adaptations for ExpertLS
1 parent f361256 commit 3e03f17

File tree

2 files changed

+18
-8
lines changed

2 files changed

+18
-8
lines changed

refactorex/lib/refactor.ex

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ defmodule Refactorex.Refactor do
3636
def execute(zipper, selection_or_line) do
3737
zipper
3838
|> Z.traverse_while(false, &visit(&1, &2, selection_or_line, true))
39-
|> then(fn {%{node: node}, true} -> Sourceror.to_string(node) end)
39+
|> then(fn {%{node: node}, can_refactor?} -> if can_refactor?, do: node end)
4040
end
4141

4242
defp visit(zipper, false, selection_or_line, refactor?) do
@@ -106,12 +106,20 @@ defmodule Refactorex.Refactor do
106106
__MODULE__.Variable.RenameVariable
107107
]
108108

109-
def available_refactorings(zipper, selection_or_line, modules \\ @refactors) do
109+
def available_refactorings(zipper, selection_or_line, execute? \\ false, modules \\ @refactors) do
110110
__MODULE__
111111
|> Task.Supervisor.async_stream_nolink(modules, fn module ->
112-
if module.available?(zipper, selection_or_line),
113-
do: module.refactoring(),
114-
else: nil
112+
cond do
113+
execute? ->
114+
if refactored = module.execute(zipper, selection_or_line),
115+
do: module.refactoring(refactored)
116+
117+
module.available?(zipper, selection_or_line) ->
118+
module.refactoring()
119+
120+
true ->
121+
nil
122+
end
115123
end)
116124
|> Enum.reduce([], fn
117125
{:ok, nil}, refactorings ->
@@ -130,17 +138,19 @@ defmodule Refactorex.Refactor do
130138

131139
zipper
132140
|> module.execute(selection_or_line)
141+
|> Sourceror.to_string()
133142
|> module.refactoring()
134143
end
135144

136145
def rename_available?(zipper, selection),
137-
do: length(available_refactorings(zipper, selection, @renamers)) == 1
146+
do: length(available_refactorings(zipper, selection, false, @renamers)) == 1
138147

139148
def rename(zipper, selection, new_name) do
140-
[%{module: module}] = available_refactorings(zipper, selection, @renamers)
149+
[%{module: module}] = available_refactorings(zipper, selection, false, @renamers)
141150

142151
zipper
143152
|> module.execute(selection)
153+
|> Sourceror.to_string()
144154
|> String.replace("#{placeholder()}", new_name)
145155
|> module.refactoring()
146156
end

refactorex/test/support/refactor_case.ex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ defmodule Refactorex.RefactorCase do
3030

3131
assert true == module.available?(zipper, selection_or_line)
3232

33-
refactored = module.execute(zipper, selection_or_line)
33+
refactored = module.execute(zipper, selection_or_line) |> Sourceror.to_string()
3434

3535
if unquote(raw?) do
3636
assert Sourceror.parse_string!(expected) == Sourceror.parse_string!(refactored)

0 commit comments

Comments
 (0)