lib/hologram/compiler/transformers/tuple_type_transformer.ex

defmodule Hologram.Compiler.TupleTypeTransformer do
  alias Hologram.Compiler.{Context, Transformer}
  alias Hologram.Compiler.IR.TupleType

  def transform({:{}, _, data}, %Context{} = context) do
    build_tuple(data, context)
  end

  def transform(data, %Context{} = context) do
    Tuple.to_list(data)
    |> build_tuple(context)
  end

  defp build_tuple(data, context) do
    data = Enum.map(data, &Transformer.transform(&1, context))
    %TupleType{data: data}
  end
end