mirror of
https://github.com/ash-project/igniter.git
synced 2024-09-19 21:12:54 +12:00
fix: descend into single child block when modifying keyword
fix: set `format: :keyword` when adding keyword list item to empty list
This commit is contained in:
parent
e2a1682d87
commit
853f27532c
1 changed files with 8 additions and 1 deletions
|
@ -93,6 +93,8 @@ defmodule Igniter.Code.Keyword do
|
||||||
end
|
end
|
||||||
|
|
||||||
defp do_put_in_keyword(zipper, [key | rest], value, updater) do
|
defp do_put_in_keyword(zipper, [key | rest], value, updater) do
|
||||||
|
zipper = Common.maybe_move_to_single_child_block(zipper)
|
||||||
|
|
||||||
if Igniter.Code.List.list?(zipper) do
|
if Igniter.Code.List.list?(zipper) do
|
||||||
case Igniter.Code.List.move_to_list_item(zipper, fn item ->
|
case Igniter.Code.List.move_to_list_item(zipper, fn item ->
|
||||||
if Igniter.Code.Tuple.tuple?(item) do
|
if Igniter.Code.Tuple.tuple?(item) do
|
||||||
|
@ -125,8 +127,11 @@ defmodule Igniter.Code.Keyword do
|
||||||
{{:__block__, [], [key]}, {:__block__, [], [value]}}
|
{{:__block__, [], [key]}, {:__block__, [], [value]}}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
[] ->
|
||||||
|
{{:__block__, [format: :keyword], [key]}, {:__block__, [], [value]}}
|
||||||
|
|
||||||
_current_node ->
|
_current_node ->
|
||||||
{key, value}
|
{{:__block__, [], [key]}, {:__block__, [], [value]}}
|
||||||
end
|
end
|
||||||
|
|
||||||
{:ok, Zipper.append_child(zipper, to_append)}
|
{:ok, Zipper.append_child(zipper, to_append)}
|
||||||
|
@ -153,6 +158,8 @@ defmodule Igniter.Code.Keyword do
|
||||||
) ::
|
) ::
|
||||||
{:ok, Zipper.t()} | :error
|
{:ok, Zipper.t()} | :error
|
||||||
def set_keyword_key(zipper, key, value, updater) do
|
def set_keyword_key(zipper, key, value, updater) do
|
||||||
|
zipper = Common.maybe_move_to_single_child_block(zipper)
|
||||||
|
|
||||||
if Igniter.Code.List.list?(zipper) do
|
if Igniter.Code.List.list?(zipper) do
|
||||||
zipper = Common.maybe_move_to_single_child_block(zipper)
|
zipper = Common.maybe_move_to_single_child_block(zipper)
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue