Size: a a a

2020 May 29

AR

Andrew Rudenko in pro.elixir
Andrew Rudenko
так то это записывается как-то так:

def render(~M{player, myname, messages}) do
   [[:div, %{id: "player", class: "player", phxUpdate: "replace"},
         [:div, %{class: "thumbnail", style: "background-image: url(#{player.thumbnail})"}],
         [:div, %{class: "audiopanel"},
           [:div, %{class: "audioline"},
             [:div, [:label, player.file],
             [:div, player.status]],
             [:progress, %{value: 1, max: 5, class: "audioprogress"}]]]],
   [:form, %{phxSubmit: "submit", phxThrottle: "2000"},
     [:input, %{type: "text", name: "userinput", placeholder: "type: ':help' to see the help message"}],
     [:label, "Logged as #{myname}"]],
   [:div, %{id: "chat-messages", name: "div", phxUpdate: "append"}],
     for ~M{id, author, text} <- messages do
       [:div, %{id: "msgid#{id}"},
         [:p, [:span, "#{author}:"],
           for line <- text do
             line
           end
           |> Enum.intersperse([:br])]]
     end]
 end
и вот это ИДЕНТИЧНО по функциональности вон той гигансткой строчке из оригинала
источник
2020 May 30

ŹR

Źmićer Rubinštejn in pro.elixir
С такой точки зрения эликсир надо писать сразу в ast. Ну и все в общем то надо писать сразу в AST. Фишка в том, что не все любят лисп)
источник

AR

Andrew Rudenko in pro.elixir
Andrew Rudenko
def render(assigns) do
   ~L"""
   <div id="player" class="player" phx-update="replace">
     <div
       class="thumbnail"
       style="background-image: url(<%= @player.thumbnail %>)"
     >
     </div>
     <div class="audiopanel">
       <div class="audioline">
         <div><label><%= @player.file %></label></div>
         <div><%= @player.status %></div>
       </div>
       <progress value="1" max="5" class="audioprogress"/></progress>
     </div>
   </div>
   <form phx-submit="submit" phx-throttle="2000">
     <input
       type="text"
       name="userinput"
       placeholder="type: ':help' to see the help message"
     >
     <label>Logged as <%= @myname %></label>
   </form>
   <div id="chat-messages" name="div" phx-update="append">
     <%= for message <- @messages do %>
       <div id="msgid<%= message.id %>">
         <p>
           <span><%= message.author %>: </span>
           <%= for line <- message.text  do %>
             <%= line %> <br>
           <% end %>
         </p>
       </div>
     <% end %>
   </div>
   """
 end
вот на это посмотришь?
источник

AR

Andrew Rudenko in pro.elixir
это AST с дублированием названием нод и в виде СТРОКИ
источник

AR

Andrew Rudenko in pro.elixir
Andrew Rudenko
и вот это ИДЕНТИЧНО по функциональности вон той гигансткой строчке из оригинала
кстати, я пизданул, не идентично, оно более корректно вставляет br ПРОСТОЙ ФУНКОЙ
источник

AR

Andrew Rudenko in pro.elixir
|> Enum.intersperse([:br])
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Надо туплами фигачить, на самом деле
источник

AR

Andrew Rudenko in pro.elixir
Andrew Rudenko
|> Enum.intersperse([:br])
интересно во что надо превратить eex чтоб достичь такой же сложной операции
источник

AR

Andrew Rudenko in pro.elixir
Źmićer Rubinštejn
Надо туплами фигачить, на самом деле
ну я идею демонстировал, понятно что детали могут быть разными
источник

AR

Andrew Rudenko in pro.elixir
но вообще не важно
источник

AR

Andrew Rudenko in pro.elixir
это синтаксис просто, тут рантайм оверхеда в любом случае нет
источник

AR

Andrew Rudenko in pro.elixir
(ну ок, зависит, _в основном нет_
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Я не уверен на самом деле, но по-моему ты неправильно нафигачил.

Если children это список, то перед вторым div должны быть две квадратные скобки
источник

ŹR

Źmićer Rubinštejn in pro.elixir
А если не список - то как то получается семантическая херня, когда в теге и атрибуты лежат и дети
источник

ŹR

Źmićer Rubinštejn in pro.elixir
В идеале должно быть тогда

{tag_name, %{attributes_map}, [children_list]}
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Иначе каша
источник

AR

Andrew Rudenko in pro.elixir
синтаксис простой:

name :: atom
attributes :: map
tag :: [name, ...tag] | [name, attributes, ...tag]

(вымышленный синтаксиси тайпспека)
источник

AR

Andrew Rudenko in pro.elixir
Źmićer Rubinštejn
Иначе каша
нет никакой каши
источник

AR

Andrew Rudenko in pro.elixir
Źmićer Rubinštejn
А если не список - то как то получается семантическая херня, когда в теге и атрибуты лежат и дети
аттрибуты у тебя всегда в мапе
источник

AR

Andrew Rudenko in pro.elixir
вторым элементом
источник