@@ -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
0 commit comments