|
|
@@ -84,6 +84,7 @@ defmodule Pleroma.Web.AdminAPI.Config do |
|
|
|
end |
|
|
|
|
|
|
|
defp do_convert({:dispatch, [entity]}), do: %{"tuple" => [":dispatch", [inspect(entity)]]} |
|
|
|
defp do_convert({:partial_chain, entity}), do: %{"tuple" => [":partial_chain", inspect(entity)]} |
|
|
|
|
|
|
|
defp do_convert(entity) when is_tuple(entity), |
|
|
|
do: %{"tuple" => do_convert(Tuple.to_list(entity))} |
|
|
@@ -113,11 +114,15 @@ defmodule Pleroma.Web.AdminAPI.Config do |
|
|
|
defp do_transform(%Regex{} = entity) when is_map(entity), do: entity |
|
|
|
|
|
|
|
defp do_transform(%{"tuple" => [":dispatch", [entity]]}) do |
|
|
|
cleaned_string = String.replace(entity, ~r/[^\w|^{:,[|^,|^[|^\]^}|^\/|^\.|^"]^\s/, "") |
|
|
|
{dispatch_settings, []} = Code.eval_string(cleaned_string, [], requires: [], macros: []) |
|
|
|
{dispatch_settings, []} = do_eval(entity) |
|
|
|
{:dispatch, [dispatch_settings]} |
|
|
|
end |
|
|
|
|
|
|
|
defp do_transform(%{"tuple" => [":partial_chain", entity]}) do |
|
|
|
{partial_chain, []} = do_eval(entity) |
|
|
|
{:partial_chain, partial_chain} |
|
|
|
end |
|
|
|
|
|
|
|
defp do_transform(%{"tuple" => entity}) do |
|
|
|
Enum.reduce(entity, {}, fn val, acc -> Tuple.append(acc, do_transform(val)) end) |
|
|
|
end |
|
|
@@ -149,4 +154,9 @@ defmodule Pleroma.Web.AdminAPI.Config do |
|
|
|
do: String.to_existing_atom("Elixir." <> value), |
|
|
|
else: value |
|
|
|
end |
|
|
|
|
|
|
|
defp do_eval(entity) do |
|
|
|
cleaned_string = String.replace(entity, ~r/[^\w|^{:,[|^,|^[|^\]^}|^\/|^\.|^"]^\s/, "") |
|
|
|
Code.eval_string(cleaned_string, [], requires: [], macros: []) |
|
|
|
end |
|
|
|
end |