defmodule StyleModule do require Poison def get_token_path() do priv_dir = :code.priv_dir(:design_styles_hex) path_string = case priv_dir do {:ok, path} -> path _ -> "" end if String.contains?(path_string, "vulcan") do "./deps/design_styles_hex/lib/tf-tokens.json" else "./lib/tf-tokens.json" end end defp import_json(_) do file_path = get_token_path() data = %{key: "value", list: [1, 2, 3]} data |> Poison.encode!() |> IO.inspect(label: "Encoded data") case File.read(file_path) do {:ok, json_string} -> case Poison.decode(json_string) do {:ok, json_data} -> IO.inspect(json_data) json_data {:error, _} -> IO.inspect("error 1") %{} end {:error, i} -> IO.inspect("error 2") IO.inspect(i) %{} end end def example_function(name) do IO.inspect(name) new_result = import_json(%{}) IO.inspect(new_result) IO.inspect(name) new_new_result = extract_value(new_result, String.split(name, ".")) IO.inspect(new_new_result) new_new_result end defp extract_value(json_data, [key | []]) do case Map.fetch(json_data, key) do {:ok, value} -> value :error -> {:error, "Value not found for key '#{key}'"} end end defp extract_value(json_data, [key | rest]) do case Map.fetch(json_data, key) do {:ok, nested_map} -> extract_value(nested_map, rest) :error -> {:error, "Value not found for key '#{key}'"} end end end