2022-03-28 10:26:35 +13:00
|
|
|
defmodule AshHqWeb.Routes do
|
2022-03-29 08:47:43 +13:00
|
|
|
def guide_link(library, version, guide) do
|
2022-03-30 05:12:28 +13:00
|
|
|
"/docs/guides/#{sanitize_name(library.name)}/#{sanitize_name(version)}/#{sanitize_name(guide)}"
|
|
|
|
end
|
|
|
|
|
|
|
|
def library_link(library, nil) do
|
|
|
|
"/docs/dsl/#{sanitize_name(library.name)}"
|
2022-03-29 08:47:43 +13:00
|
|
|
end
|
|
|
|
|
2022-03-28 10:26:35 +13:00
|
|
|
def library_link(library, name) do
|
2022-03-30 05:12:28 +13:00
|
|
|
"/docs/dsl/#{sanitize_name(library.name)}/#{sanitize_name(name)}"
|
2022-03-28 10:26:35 +13:00
|
|
|
end
|
|
|
|
|
|
|
|
def extension_link(library, name, extension) do
|
2022-03-30 05:12:28 +13:00
|
|
|
"/docs/dsl/#{sanitize_name(library.name)}/#{sanitize_name(name)}/#{sanitize_name(extension)}"
|
2022-03-28 10:26:35 +13:00
|
|
|
end
|
|
|
|
|
2022-03-30 17:40:17 +13:00
|
|
|
def dsl_link(library, name, extension, item) do
|
|
|
|
case item.path do
|
|
|
|
[] ->
|
|
|
|
"/docs/dsl/#{sanitize_name(library.name)}/#{sanitize_name(name)}/#{sanitize_name(extension)}/#{sanitize_name(item.name)}"
|
|
|
|
|
|
|
|
path ->
|
|
|
|
"/docs/dsl/#{sanitize_name(library.name)}/#{sanitize_name(name)}/#{sanitize_name(extension)}/#{sanitize_name(Enum.at(path, 0))}##{Enum.map_join(Enum.drop(path ++ [item.name], 1), "-", &sanitize_name/1)}"
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
def module_link(library, version, module) do
|
|
|
|
"/docs/module/#{sanitize_name(library.name)}/#{sanitize_name(version)}/#{sanitize_name(module)}"
|
|
|
|
end
|
|
|
|
|
|
|
|
def function_link(library, version, module, function, arity) do
|
|
|
|
"/docs/module/#{sanitize_name(library.name)}/#{sanitize_name(version)}/#{sanitize_name(module)}##{sanitize_name(function)}-#{arity}"
|
|
|
|
end
|
|
|
|
|
|
|
|
def doc_link(%AshHq.Docs.Module{
|
|
|
|
name: name,
|
|
|
|
library_name: library_name,
|
|
|
|
version_name: version_name
|
|
|
|
}) do
|
|
|
|
"/docs/module/#{sanitize_name(library_name)}/#{sanitize_name(version_name)}/#{sanitize_name(name)}"
|
|
|
|
end
|
|
|
|
|
|
|
|
def doc_link(%AshHq.Docs.Function{
|
|
|
|
name: name,
|
|
|
|
arity: arity,
|
|
|
|
module_name: module_name,
|
|
|
|
library_name: library_name,
|
|
|
|
version_name: version_name
|
|
|
|
}) do
|
|
|
|
"/docs/module/#{sanitize_name(library_name)}/#{sanitize_name(version_name)}/#{sanitize_name(module_name)}/##{sanitize_name(name)}-#{arity}"
|
|
|
|
end
|
|
|
|
|
2022-03-29 08:47:43 +13:00
|
|
|
def doc_link(%AshHq.Docs.Guide{
|
|
|
|
url_safe_name: url_safe_name,
|
|
|
|
library_version: %{library_name: library_name, version: version}
|
|
|
|
}) do
|
2022-03-30 05:12:28 +13:00
|
|
|
"/docs/guides/#{sanitize_name(library_name)}/#{sanitize_name(version)}/#{url_safe_name}"
|
2022-03-29 08:47:43 +13:00
|
|
|
end
|
|
|
|
|
2022-03-28 10:26:35 +13:00
|
|
|
def doc_link(%AshHq.Docs.LibraryVersion{library_name: library_name, version: version}) do
|
2022-03-30 05:12:28 +13:00
|
|
|
"/docs/dsl/#{sanitize_name(library_name)}/#{sanitize_name(version)}"
|
|
|
|
end
|
|
|
|
|
|
|
|
def doc_link(%AshHq.Docs.Extension{
|
|
|
|
library_version: %{library_name: library_name, version: version},
|
|
|
|
name: name
|
|
|
|
}) do
|
|
|
|
"/docs/dsl/#{sanitize_name(library_name)}/#{sanitize_name(version)}/#{sanitize_name(name)}"
|
2022-03-28 10:26:35 +13:00
|
|
|
end
|
|
|
|
|
|
|
|
def doc_link(item) do
|
|
|
|
case item.path do
|
|
|
|
[] ->
|
2022-03-30 17:40:17 +13:00
|
|
|
"/docs/dsl/#{sanitize_name(item.library_name)}/#{sanitize_name(item.version_name)}/#{sanitize_name(item.extension_name)}/#{sanitize_name(item.name)}"
|
2022-03-28 10:26:35 +13:00
|
|
|
|
|
|
|
path ->
|
2022-03-30 17:40:17 +13:00
|
|
|
"/docs/dsl/#{sanitize_name(item.library_name)}/#{sanitize_name(item.version_name)}/#{sanitize_name(item.extension_name)}/#{sanitize_name(Enum.at(path, 0))}##{Enum.map_join(Enum.drop(path ++ [item.name], 1), "-", &sanitize_name/1)}"
|
2022-03-28 10:26:35 +13:00
|
|
|
end
|
|
|
|
end
|
2022-03-30 05:12:28 +13:00
|
|
|
|
|
|
|
def sanitize_name(name) do
|
|
|
|
String.downcase(String.replace(name, ~r/[^A-Za-z0-9_]/, "-"))
|
|
|
|
end
|
2022-03-28 10:26:35 +13:00
|
|
|
end
|