lib/hologram/compiler/transformers/match_operator_transformer.ex
defmodule Hologram.Compiler.MatchOperatorTransformer do
alias Hologram.Compiler.{Binder, Context, Transformer}
alias Hologram.Compiler.IR.MatchOperator
def transform({:=, _, [left, right]}, %Context{} = context) do
left = Transformer.transform(left, context)
bindings =
Binder.bind(left)
|> Enum.map(fn path ->
[head | tail] = Enum.reverse(path)
{head.name, Enum.reverse(tail)}
end)
%MatchOperator{
bindings: bindings,
left: left,
right: Transformer.transform(right, context)
}
end
end