mirror of
https://github.com/ash-project/igniter.git
synced 2024-09-20 05:22:52 +12:00
improvement: add blocks together more fluidly in add_code
This commit is contained in:
parent
a234998886
commit
e2a24475b1
1 changed files with 24 additions and 6 deletions
|
@ -142,10 +142,20 @@ defmodule Igniter.Code.Common do
|
||||||
case zipper.node do
|
case zipper.node do
|
||||||
{:__block__, meta, stuff} when length(stuff) > 1 or stuff == [] ->
|
{:__block__, meta, stuff} when length(stuff) > 1 or stuff == [] ->
|
||||||
new_stuff =
|
new_stuff =
|
||||||
if placement == :after do
|
case new_code do
|
||||||
stuff ++ [new_code]
|
{:__block__, _, new_stuff} when length(new_stuff) > 1 or new_stuff == [] ->
|
||||||
else
|
if placement == :after do
|
||||||
[new_code | stuff]
|
stuff ++ new_stuff
|
||||||
|
else
|
||||||
|
new_code ++ stuff
|
||||||
|
end
|
||||||
|
|
||||||
|
new_code ->
|
||||||
|
if placement == :after do
|
||||||
|
stuff ++ [new_code]
|
||||||
|
else
|
||||||
|
[new_code | stuff]
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
Zipper.replace(zipper, {:__block__, meta, new_stuff})
|
Zipper.replace(zipper, {:__block__, meta, new_stuff})
|
||||||
|
@ -154,7 +164,8 @@ defmodule Igniter.Code.Common do
|
||||||
zipper
|
zipper
|
||||||
|> Zipper.up()
|
|> Zipper.up()
|
||||||
|> case do
|
|> case do
|
||||||
%Zipper{node: {:__block__, meta, stuff}} = upwards ->
|
%Zipper{node: {:__block__, meta, stuff}} = upwards
|
||||||
|
when length(stuff) > 1 or stuff == [] ->
|
||||||
index = Enum.find_index(stuff, &(&1 == code))
|
index = Enum.find_index(stuff, &(&1 == code))
|
||||||
|
|
||||||
new_index =
|
new_index =
|
||||||
|
@ -165,7 +176,14 @@ defmodule Igniter.Code.Common do
|
||||||
end
|
end
|
||||||
|
|
||||||
new_stuff =
|
new_stuff =
|
||||||
List.insert_at(stuff, new_index, new_code)
|
case new_code do
|
||||||
|
{:__block__, _, new_stuff} when length(new_stuff) > 1 or new_stuff == [] ->
|
||||||
|
{lead, trail} = Enum.split(stuff, new_index)
|
||||||
|
lead ++ new_stuff ++ trail
|
||||||
|
|
||||||
|
_ ->
|
||||||
|
List.insert_at(stuff, new_index, new_code)
|
||||||
|
end
|
||||||
|
|
||||||
Zipper.replace(upwards, {:__block__, meta, new_stuff})
|
Zipper.replace(upwards, {:__block__, meta, new_stuff})
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue