MUSTDOS
1
Hello all!
assign(socket, :name, “Elixir”)
Why can’t we have assign/stream take a group of atoms and maps/structs as a default to reduce spamming assign/stream along with their parentheses?
I know this isn’t a perfect example of code but here’s what I cooked up but it returns a list of assigns/streams instead finalizing them
def socket_initializer(socket,initializer_list) do
socket = Enum.map(initializer_list, fn {key,value} ->
case key do
:stream ->
Enum.map(value, fn {stream_name, stream_value} ->
IO.inspect stream(socket, stream_name, stream_value)
end)
:assign ->
Enum.map(value, fn {assign_name, assign_value} ->
IO.inspect assign(socket, assign_name, assign_value)
end)
_ ->
IO.puts(to_string(key) <> " is not a valid initalizer")
end
end)
end
initializer_list = [
{ :assign , [ {:search, %Worker{}}, {:active_account_tuple , Operations.status_tuple_registration()} ] },
{ :stream , [ {:workers , %Worker{}} ] }
]
stream/4 works on a single stream, but assign/2 can assign multiple values at once.
The one you were referring to is assign/3 which works on a single item.
2 Likes
al2o3cr
3
(NOTE: spruced up the formatting of your code example using triple-backticks ```)
I don’t personally see a huge difference between adding a stream by writing:
{:stream, [{:whatever, %Whatever{}}]},
and
|> stream(:whatever, %Whatever{})
Your post mentions “along with their parentheses”, but the former definitely seems to have more bracketry than the latter.
MUSTDOS
7
initializer_list = [
{:stream, [
{:whatever1, %Whatever1{}},
{:whatever2, %Whatever2{}},
{:whatever3, %Whatever3{}}
]
},
{:assign, [
{:whatever4, %Whatever4{}},
{:whatever5, %Whatever5{}},
{:whatever6, %Whatever6{}}
]
}
]
VS
socket
|> stream(:whatever1, %Whatever1{})
|> stream(:whatever2, %Whatever2{})
|> stream(:whatever3, %Whatever3{})
|> assigns(:whatever, %Whatever{})
|> assigns(:whatever, %Whatever{})
|> assigns(:whatever, %Whatever{})
(or)
|>assigns(fn %{struct_of_whatever: struct_of_whatever} -> %{whatever: struct_of_whatever} end)
I just felt easier for multiple copy and pastes for bigger pages.
MUSTDOS
8
Sorry for multiple repeated posts; it just gave me error occurred or something for clicking reply until I refreshed
all good! i’ve cleaned up the previous posts
1 Like