lib/tools/dict.ex

defmodule Dragon.Tools.Dict do
  @moduledoc """
  File handling tools.
  """
  use Dragon.Context

  def put_into(dict, [key], value), do: Map.put(dict, key, value)

  def put_into(dict, [key | keys], value) do
    case Map.get(dict, key) do
      nil -> Map.put(dict, key, put_into(%{}, keys, value))
      d when is_map(d) -> Map.replace(dict, key, put_into(d, keys, value))
      _ -> raise ArgumentError
    end
  end
end