defmodule Temple.Parser.NonvoidElementsAliases do @moduledoc false @behaviour Temple.Parser defstruct name: nil, attrs: [], children: [], meta: %{} alias Temple.Parser @impl Parser def applicable?({name, _, _}) do name in Parser.nonvoid_elements_aliases() end def applicable?(_), do: false @impl Parser def run({name, meta, args}) do name = Parser.nonvoid_elements_lookup()[name] {do_and_else, args} = Temple.Parser.Utils.split_args(args) {do_and_else, args} = Temple.Parser.Utils.consolidate_blocks(do_and_else, args) children = Temple.Parser.parse(do_and_else[:do]) Temple.Ast.new(__MODULE__, name: to_string(name) |> String.replace_suffix("!", ""), attrs: args, meta: %{whitespace: whitespace(meta)}, children: Temple.Ast.new(Temple.Parser.ElementList, children: children, whitespace: whitespace(meta) ) ) end defp whitespace(_meta) do :tight end end