lib/fermo/paths.ex

defmodule Fermo.Paths do
  def filename_to_path(path, opts \\ [])
  def filename_to_path(filename, as_index_html: true) do
    cond do
      filename == "index.html" ->
        "/"
      String.ends_with?(filename, "/index.html") ->
        String.replace(filename, "index.html", "")
      String.ends_with?(filename, ".html") ->
        String.replace(filename, ".html", "")
      true ->
        filename
    end
  end
  def filename_to_path(path, _opts), do: path

  def path_to_filename(path, opts \\ [])
  def path_to_filename(path, as_index_html: false), do: path
  def path_to_filename(path, _opts) do
    cond do
      path == "index.html" ->
        path
      String.ends_with?(path, "/index.html") ->
        path
      String.ends_with?(path, "/") ->
        path <> "index.html"
      String.ends_with?(path, ".html") ->
        String.replace(path, ".html", "/index.html")
      true ->
        path <> "/index.html"
    end
  end

  def template_to_filename(template, opts) do
    without_templating_extension = String.replace(template, ~r(\.[a-z]+$), "")

    path_to_filename(without_templating_extension, opts)
  end
end