Powered by AppSignal & Oban Pro
Would you like to see your link here? Contact us

Routes

livebooks/routes.livemd

Routes

Section

defmodule Naming do
  def title_case(str) do
    str
    |> String.trim()
    |> String.split(" ")
    |> Enum.map(fn word ->
      case word do
        "" ->
          "Home Page"

        "utm" ->
          "UTM"

        "users" ->
          nil

        word ->
          Phoenix.Naming.humanize(word)
      end
    end)
    |> Enum.join(" ")
    |> String.trim()
  end
end
Naming.title_case("hello, abhijit kar!")
slugs =
  DerpyToolsWeb.Router.__routes__()
  |> Enum.map(fn route -> {route.path, route.verb} end)
  |> Enum.filter(fn
    {path, verb} when verb in ~w(get delete)a -> !(path =~ ":" || path =~ "/tools")
    {_, _} -> false
  end)
names =
  slugs
  |> Enum.map(fn {path, _} ->
    path
    |> String.replace(~r"/|_|\-", " ")
    |> Naming.title_case()
  end)
routes =
  Enum.zip(names, slugs)
  |> Enum.map(fn {name, {slug, verb}} -> %{name: name, slug: slug, method: verb} end)
(routes ++ [%{name: "Mew", slug: "/mew"}])
|> Enum.with_index(fn map, index -> Map.put_new(map, :id, index) end)
DerpyTools.DataStore.Routes.fetch_routes()