Improve string_to_elixir_types/1 with guards
authorMark Felder <feld@feld.me>
Tue, 13 Apr 2021 19:25:15 +0000 (14:25 -0500)
committerMark Felder <feld@feld.me>
Tue, 13 Apr 2021 19:39:57 +0000 (14:39 -0500)
lib/pleroma/config_db.ex

index 03905c06b4d05a981a7ba38877a9574c800c9e7b..eeeb026c16de078bd31061f028857938a885c1d0 100644 (file)
@@ -327,7 +327,7 @@ defmodule Pleroma.ConfigDB do
 
   @spec string_to_elixir_types(String.t()) ::
           atom() | Regex.t() | module() | String.t() | no_return()
-  def string_to_elixir_types("~r" <> _pattern = regex) do
+  def string_to_elixir_types("~r" <> _pattern = regex) when is_binary(regex) do
     pattern =
       ~r/^~r(?'delimiter'[\/|"'([{<]{1})(?'pattern'.+)[\/|"')\]}>]{1}(?'modifier'[uismxfU]*)/u
 
@@ -341,9 +341,9 @@ defmodule Pleroma.ConfigDB do
     end
   end
 
-  def string_to_elixir_types(":" <> atom), do: String.to_atom(atom)
+  def string_to_elixir_types(":" <> atom) when is_binary(atom), do: String.to_atom(atom)
 
-  def string_to_elixir_types(value) do
+  def string_to_elixir_types(value) when is_binary(value) do
     if module_name?(value) do
       String.to_existing_atom("Elixir." <> value)
     else
@@ -351,6 +351,8 @@ defmodule Pleroma.ConfigDB do
     end
   end
 
+  def string_to_elixir_types(value) when is_atom(value), do: value
+
   defp parse_host("localhost"), do: :localhost
 
   defp parse_host(host) do