This repository has been archived on 2023-08-07. You can view files and clone it, but cannot push or open issues or pull requests.
temple/lib/temple/parser/slot.ex
Mitchell Hanberg 99cbb42962
SVG (#181)
This basically just adds svg elements as void and nonvoid element
aliases and it works, will test on a real proejct before releasing the
next release.

Also, fixed the weird behaviour problem by defining types for each of the ast
nodes and then referencing those types when defining the ast type.

Unclear why this works, but I imagine it has to do with the types not
being a big part of the compilation process or something.

This also uses the typed_struct library to do so. Seems pretty slick and
does what it claims it does.
2022-09-19 20:35:45 -04:00

32 lines
509 B
Elixir

defmodule Temple.Parser.Slot do
@moduledoc false
@behaviour Temple.Parser
use TypedStruct
typedstruct do
field :name, atom()
field :args, list(), default: []
end
@impl true
def applicable?({:slot, _, _}) do
true
end
def applicable?(_), do: false
@impl true
def run({:slot, _, [slot_name | rest]}) do
args =
case rest do
[args] ->
args
_ ->
[]
end
Temple.Ast.new(__MODULE__, name: slot_name, args: args)
end
end