Files
n8n-openai-adapter/lib/elixir/src/elixir_transform.erl
T

38 lines
1.1 KiB
Erlang

-module(elixir_transform).
-export([parse_transform/2]).
parse_transform(Forms, _) ->
do_transform(Forms).
do_transform({ atom, Line, Atom }) ->
case atom_to_list(Atom) of
"Elixir." ++ _ = List ->
Module = [case T of
$. -> $-;
_ -> T
end || T <- List],
{ atom, Line, list_to_atom(Module) };
_ ->
{ atom, Line, Atom }
end;
do_transform({ Name, Item1 }) ->
{ Name, do_transform(Item1) };
do_transform({ Name, Item1, Item2 }) ->
{ Name, do_transform(Item1), do_transform(Item2) };
do_transform({ Name, Item1, Item2, Item3 }) ->
{ Name, do_transform(Item1), do_transform(Item2), do_transform(Item3) };
do_transform({ Name, Item1, Item2, Item3, Item4 }) ->
{ Name, do_transform(Item1), do_transform(Item2), do_transform(Item3), do_transform(Item4) };
do_transform({ Name, Item1, Item2, Item3, Item4, Item5 }) ->
{ Name, do_transform(Item1), do_transform(Item2), do_transform(Item3), do_transform(Item4), do_transform(Item5) };
do_transform(List) when is_list(List) ->
[do_transform(X) || X <- List];
do_transform(Other) when not is_tuple(Other) ->
Other.