58 lines
1.6 KiB
Elixir
58 lines
1.6 KiB
Elixir
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
|