aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorAlex S <alex.strizhakov@gmail.com>2019-06-22 17:30:53 +0300
committerAlex S <alex.strizhakov@gmail.com>2019-06-22 17:30:53 +0300
commit410add1c30d230e86c22de4e54bb9999de980b16 (patch)
treee0b9c47070751946f0fc1c3a171a07d77e6cc030 /lib
parentf0fccb75783bcac406133d8cb3d4d3a485189092 (diff)
downloadpleroma-410add1c30d230e86c22de4e54bb9999de980b16.tar.gz
support for tuples with more than 2 values
Diffstat (limited to 'lib')
-rw-r--r--lib/pleroma/web/admin_api/config.ex48
1 files changed, 27 insertions, 21 deletions
diff --git a/lib/pleroma/web/admin_api/config.ex b/lib/pleroma/web/admin_api/config.ex
index ddcfc87d5..2e149bf25 100644
--- a/lib/pleroma/web/admin_api/config.ex
+++ b/lib/pleroma/web/admin_api/config.ex
@@ -77,6 +77,8 @@ defmodule Pleroma.Web.AdminAPI.Config do
defp do_convert({k, v} = value) when is_tuple(value),
do: %{k => do_convert(v)}
+ defp do_convert(value) when is_tuple(value), do: %{"tuple" => do_convert(Tuple.to_list(value))}
+
defp do_convert(value) when is_binary(value) or is_map(value) or is_number(value), do: value
defp do_convert(value) when is_atom(value) do
@@ -108,11 +110,16 @@ defmodule Pleroma.Web.AdminAPI.Config do
defp do_transform(%Regex{} = value) when is_map(value), do: value
+ defp do_transform(%{"tuple" => [k, values] = entity}) when length(entity) == 2 do
+ {do_transform(k), do_transform(values)}
+ end
+
+ defp do_transform(%{"tuple" => values}) do
+ Enum.reduce(values, {}, fn val, acc -> Tuple.append(acc, do_transform(val)) end)
+ end
+
defp do_transform(value) when is_map(value) do
- values =
- for {key, val} <- value,
- into: [],
- do: {String.to_atom(key), do_transform(val)}
+ values = for {key, val} <- value, into: [], do: {String.to_atom(key), do_transform(val)}
Enum.sort(values)
end
@@ -124,28 +131,27 @@ defmodule Pleroma.Web.AdminAPI.Config do
defp do_transform(entity) when is_list(entity) and length(entity) == 1, do: hd(entity)
defp do_transform(value) when is_binary(value) do
- value = String.trim(value)
+ String.trim(value)
+ |> do_transform_string()
+ end
+
+ defp do_transform(value), do: value
- case String.length(value) do
- 0 ->
- nil
+ defp do_transform_string(value) when byte_size(value) == 0, do: nil
- _ ->
- cond do
- String.starts_with?(value, "Pleroma") ->
- String.to_existing_atom("Elixir." <> value)
+ defp do_transform_string(value) do
+ cond do
+ String.starts_with?(value, "Pleroma") or String.starts_with?(value, "Phoenix") ->
+ String.to_existing_atom("Elixir." <> value)
- String.starts_with?(value, ":") ->
- String.replace(value, ":", "") |> String.to_existing_atom()
+ String.starts_with?(value, ":") ->
+ String.replace(value, ":", "") |> String.to_existing_atom()
- String.starts_with?(value, "i:") ->
- String.replace(value, "i:", "") |> String.to_integer()
+ String.starts_with?(value, "i:") ->
+ String.replace(value, "i:", "") |> String.to_integer()
- true ->
- value
- end
+ true ->
+ value
end
end
-
- defp do_transform(value), do: value
end