     Enum.map(list, &pattern/1)
   end
 
+  # Handle string maps, including ones with multiple keys
+  # {:%{}, [], [{:stuff, [], Elixir}, {:things, [], Elixir}]}
+  defmacro s({:%{}, context, args}) do
+    {:%{}, context, Enum.map(args, &s_pattern/1)}
+  end
+
   defp s_pattern({key, _, _} = variable) do
     {key |> Atom.to_string(), variable}
   end


  For Maps with String Keys:

      iex> d(s%{name}) = %{"name" => "Daniel Berkompas"}
      ...> name
      "Daniel Berkompas"

  With multiple keys:

      iex> d(s%{name, email}) = %{"name" => "Daniel Berkompas", "email" => "top@secret.com"}
      ...> {name, email}
      {"Daniel Berkompas", "top@secret.com"}

  With multiple keys and custom variable naming:

      iex> d(s%{name, "email" => mail}) = %{"name" => "Daniel Berkompas", "email" => "top@secret.com"}
      ...> {name, mail}
      {"Daniel Berkompas", "top@secret.com"}


    {:%{}, context, Enum.map(args, &pattern/1)}
  end

  # Handle structs, including ones with multiple keys
  # {:%, [],
  #  [{:__aliases__, [alias: false], [:Namespace]},
