defmodule RlRepo.Template do require Logger def template(template_name, replacements) do Logger.info("Loading template #{template_name}") {:ok, body} = File.read("assets/html/#{template_name}.html") # TODO: Check if there is any actual placeholders v = String.contains?(body, "~(") Logger.info v # if v do len = body |> String.split("~(") |> length() Logger.info body # TODO: Math this out to be equal to the number of splits # if len >= 2 do template_step(replacements, body, len) # Logger.info "Len greater 2" # end # end # body end def test_template(template_name, replacements) do body = "~(reason)" # TODO: Check if there is any actual placeholders v = String.contains?(body, "~(") Logger.info v # if v do len = body |> String.split("~(") |> length() Logger.info body # TODO: Math this out to be equal to the number of splits # if len >= 2 do template_step(replacements, body, len) # Logger.info "Len greater 2" # end # end # body end def template_step(replacements, body, steps_left) do [before_placeholder | rest] = split_path = String.split(body, "~(", parts: 2) [remains | _] = rest [placeholder_name | after_placeholder] = String.split(remains, ")", parts: 2) [after_placeholder | _] = after_placeholder {:ok, replace} = Map.fetch(replacements, placeholder_name) body = before_placeholder <> replace <> after_placeholder steps_left = steps_left - 1 if steps_left == 1 do body else template_step(replacements, body, steps_left) end end end