chore: improvements/renames

This commit is contained in:
Zach Daniel 2024-06-19 15:47:03 -04:00
parent 062d46a7ef
commit 680526c685
8 changed files with 60 additions and 31 deletions

View file

@ -122,9 +122,8 @@ defmodule Igniter.Application do
{:ok, zipper} ->
zipper
|> Zipper.rightmost()
|> Igniter.Debug.puts_ast_at_node()
|> Igniter.Code.Keyword.set_keyword_key(:mod, {application, []}, fn z ->
{:ok, Zipper.replace(z, {application, []})}
{:ok, Common.replace_code(z, {application, []})}
end)
_ ->

View file

@ -44,7 +44,7 @@ defmodule Igniter.Code.Common do
quote do
ast =
unquote(zipper)
|> Igniter.Code.Common.maybe_move_to_singleton_block()
|> Igniter.Code.Common.maybe_move_to_single_child_block()
|> Zipper.subtree()
|> Zipper.root()
@ -184,6 +184,20 @@ defmodule Igniter.Code.Common do
end
end
def replace_code(zipper, code) when is_binary(code) do
add_code(zipper, Sourceror.parse_string!(code))
end
def replace_code(zipper, code) do
current_code =
zipper
|> Zipper.subtree()
code = use_aliases(code, current_code)
Zipper.replace(zipper, code)
end
defp highest_adjacent_block(zipper) do
case Zipper.up(zipper) do
nil ->
@ -205,7 +219,7 @@ defmodule Igniter.Code.Common do
end
end
defp use_aliases(new_code, current_code) do
def use_aliases(new_code, current_code) do
case env_at_cursor(current_code) do
{:ok, env} ->
Macro.prewalk(new_code, fn
@ -222,7 +236,7 @@ defmodule Igniter.Code.Common do
node
end)
:error ->
_ ->
new_code
end
end
@ -300,10 +314,10 @@ defmodule Igniter.Code.Common do
Enters a block with a single child, and moves to that child,
or returns the zipper unmodified
"""
@spec maybe_move_to_singleton_block(Zipper.t()) :: Zipper.t()
def maybe_move_to_singleton_block(nil), do: nil
@spec maybe_move_to_single_child_block(Zipper.t()) :: Zipper.t()
def maybe_move_to_single_child_block(nil), do: nil
def maybe_move_to_singleton_block(zipper) do
def maybe_move_to_single_child_block(zipper) do
zipper
|> Zipper.subtree()
|> Zipper.root()
@ -316,7 +330,7 @@ defmodule Igniter.Code.Common do
zipper
zipper ->
maybe_move_to_singleton_block(zipper)
maybe_move_to_single_child_block(zipper)
end
_ ->
@ -419,7 +433,7 @@ defmodule Igniter.Code.Common do
end
defp do_move_right(zipper, pred) do
zipper_in_block = maybe_move_to_singleton_block(zipper)
zipper_in_block = maybe_move_to_single_child_block(zipper)
cond do
pred.(zipper_in_block) ->
@ -560,8 +574,12 @@ defmodule Igniter.Code.Common do
{:ok, struct(Macro.Env, cursor_env)}
end)
rescue
_e ->
:error
e ->
# if Application.get_env(:igniter, :testing) do
reraise e, __STACKTRACE__
# else
# {:error, e}
# end
end
@doc """
@ -628,7 +646,7 @@ defmodule Igniter.Code.Common do
end
end)
:error ->
_ ->
zipper
end
end

View file

@ -57,7 +57,7 @@ defmodule Igniter.Code.Function do
@spec function_call?(Zipper.t(), atom, non_neg_integer()) :: boolean()
def function_call?(%Zipper{} = zipper, name, arity) do
zipper
|> Common.maybe_move_to_singleton_block()
|> Common.maybe_move_to_single_child_block()
|> Zipper.subtree()
|> Zipper.root()
|> case do
@ -82,7 +82,7 @@ defmodule Igniter.Code.Function do
@spec function_call?(Zipper.t(), atom) :: boolean()
def function_call?(%Zipper{} = zipper, name) do
zipper
|> Common.maybe_move_to_singleton_block()
|> Common.maybe_move_to_single_child_block()
|> Zipper.subtree()
|> Zipper.root()
|> case do
@ -107,7 +107,7 @@ defmodule Igniter.Code.Function do
@spec function_call?(Zipper.t()) :: boolean()
def function_call?(%Zipper{} = zipper) do
zipper
|> Common.maybe_move_to_singleton_block()
|> Common.maybe_move_to_single_child_block()
|> Zipper.subtree()
|> Zipper.root()
|> case do
@ -329,7 +329,7 @@ defmodule Igniter.Code.Function do
{:ok, zipper} ->
zipper
|> Common.maybe_move_to_singleton_block()
|> Common.maybe_move_to_single_child_block()
|> func.()
end
end
@ -351,7 +351,7 @@ defmodule Igniter.Code.Function do
{:ok, zipper} ->
zipper
|> Common.maybe_move_to_singleton_block()
|> Common.maybe_move_to_single_child_block()
|> func.()
end
end

View file

@ -81,7 +81,7 @@ defmodule Igniter.Code.Keyword do
) ::
{:ok, Zipper.t()} | :error
def put_in_keyword(zipper, path, value, updater \\ nil) do
updater = updater || fn zipper -> {:ok, Zipper.replace(zipper, value)} end
updater = updater || fn zipper -> {:ok, Common.replace_code(zipper, value)} end
do_put_in_keyword(zipper, path, value, updater)
end
@ -112,6 +112,8 @@ defmodule Igniter.Code.Keyword do
|> Sourceror.to_string()
|> Sourceror.parse_string!()
value = Common.use_aliases(value, zipper)
to_append =
zipper
|> Zipper.subtree()
@ -148,7 +150,7 @@ defmodule Igniter.Code.Keyword do
{:ok, Zipper.t()} | :error
def set_keyword_key(zipper, key, value, updater) do
if Common.node_matches_pattern?(zipper, value when is_list(value)) do
zipper = Common.maybe_move_to_singleton_block(zipper)
zipper = Common.maybe_move_to_single_child_block(zipper)
case Igniter.Code.List.move_to_list_item(zipper, fn item ->
if Igniter.Code.Tuple.tuple?(item) do
@ -173,6 +175,10 @@ defmodule Igniter.Code.Keyword do
|> Sourceror.to_string()
|> Sourceror.parse_string!()
Common.env_at_cursor(zipper) |> IO.inspect()
value = Common.use_aliases(value, zipper)
if meta[:format] do
{{:__block__, [format: meta[:format]], [key]}, value}
else

View file

@ -48,7 +48,7 @@ defmodule Igniter.Code.List do
|> case do
nil ->
zipper
|> Common.maybe_move_to_singleton_block()
|> Common.maybe_move_to_single_child_block()
|> Zipper.append_child(quoted)
_ ->
@ -65,7 +65,7 @@ defmodule Igniter.Code.List do
if list?(zipper) do
{:ok,
zipper
|> Common.maybe_move_to_singleton_block()
|> Common.maybe_move_to_single_child_block()
|> Zipper.insert_child(quoted)}
else
:error
@ -78,7 +78,7 @@ defmodule Igniter.Code.List do
if list?(zipper) do
{:ok,
zipper
|> Common.maybe_move_to_singleton_block()
|> Common.maybe_move_to_single_child_block()
|> Zipper.append_child(quoted)}
else
:error
@ -139,7 +139,7 @@ defmodule Igniter.Code.List do
def find_list_item_index(zipper, pred) do
# go into first list item
zipper
|> Common.maybe_move_to_singleton_block()
|> Common.maybe_move_to_single_child_block()
|> Zipper.down()
|> case do
nil ->
@ -155,7 +155,7 @@ defmodule Igniter.Code.List do
def move_to_list_item(zipper, pred) do
# go into first list item
zipper
|> Common.maybe_move_to_singleton_block()
|> Common.maybe_move_to_single_child_block()
|> Zipper.down()
|> case do
nil ->
@ -167,7 +167,7 @@ defmodule Igniter.Code.List do
end
defp find_index_right(zipper, pred, index) do
if pred.(Common.maybe_move_to_singleton_block(zipper)) do
if pred.(Common.maybe_move_to_single_child_block(zipper)) do
index
else
case Zipper.right(zipper) do

View file

@ -16,7 +16,7 @@ defmodule Igniter.Code.Map do
) ::
{:ok, Zipper.t()} | :error
def put_in_map(zipper, path, value, updater \\ nil) do
updater = updater || fn zipper -> {:ok, Zipper.replace(zipper, value)} end
updater = updater || fn zipper -> {:ok, Common.replace_code(zipper, value)} end
do_put_in_map(zipper, path, value, updater)
end
@ -28,6 +28,8 @@ defmodule Igniter.Code.Map do
defp do_put_in_map(zipper, [key | rest], value, updater) do
cond do
Common.node_matches_pattern?(zipper, {:%{}, _, []}) ->
value = Common.use_aliases(value, zipper)
{:ok,
Zipper.append_child(
zipper,
@ -50,6 +52,7 @@ defmodule Igniter.Code.Map do
end)
|> case do
:error ->
value = Common.use_aliases(value, zipper)
format = map_keys_format(zipper)
value = mappify(rest, value)
@ -82,6 +85,8 @@ defmodule Igniter.Code.Map do
def set_map_key(zipper, key, value, updater) do
cond do
Common.node_matches_pattern?(zipper, {:%{}, _, []}) ->
value = Common.use_aliases(value, zipper)
{:ok,
Zipper.append_child(
zipper,
@ -104,6 +109,7 @@ defmodule Igniter.Code.Map do
end)
|> case do
:error ->
value = Common.use_aliases(value, zipper)
format = map_keys_format(zipper)
{:ok,

View file

@ -22,12 +22,12 @@ defmodule Igniter.Code.Tuple do
@spec tuple_elem(Zipper.t(), elem :: non_neg_integer()) :: {:ok, Zipper.t()} | :error
def tuple_elem(item, elem) do
item
|> Common.maybe_move_to_singleton_block()
|> Common.maybe_move_to_single_child_block()
|> Zipper.down()
|> Common.nth_right(elem)
|> case do
{:ok, nth} ->
{:ok, Common.maybe_move_to_singleton_block(nth)}
{:ok, Common.maybe_move_to_single_child_block(nth)}
:error ->
:error

View file

@ -32,7 +32,7 @@ defmodule Igniter.Config do
value -> Macro.escape(value)
end
updater = updater || fn zipper -> {:ok, Zipper.replace(zipper, value)} end
updater = updater || fn zipper -> {:ok, Common.replace_code(zipper, value)} end
igniter
|> ensure_default_configs_exist(file_name)
@ -93,7 +93,7 @@ defmodule Igniter.Config do
(Zipper.t() -> {:ok, Zipper.t()} | :error) | nil
) :: Zipper.t()
def modify_configuration_code(zipper, config_path, app_name, value, updater \\ nil) do
updater = updater || fn zipper -> {:ok, Zipper.replace(zipper, value)} end
updater = updater || fn zipper -> {:ok, Common.replace_code(zipper, value)} end
case try_update_three_arg(zipper, config_path, app_name, value, updater) do
{:ok, zipper} ->