references: fix docs, fix invalid class, improve structure

This commit is contained in:
Inhji 2023-07-05 06:50:27 +02:00
parent 2ac2e1ec01
commit 1de3687693

View file

@ -22,10 +22,9 @@ defmodule ChiyaWeb.References do
end end
@doc """ @doc """
Checks each reference returned from `get_references/1` and validates its existence. Checks a reference returned from `get_references/1` and validates its existence.
""" """
def validate_references(references) do def validate_reference({placeholder, slug, custom_title} = _reference) do
Enum.map(references, fn {placeholder, slug, custom_title} ->
note = Chiya.Notes.get_note_by_slug_preloaded(slug) note = Chiya.Notes.get_note_by_slug_preloaded(slug)
valid = valid =
@ -49,11 +48,10 @@ defmodule ChiyaWeb.References do
end end
{placeholder, slug, title, valid} {placeholder, slug, title, valid}
end)
end end
@doc """ @doc """
Returns a list of slugs that are referenced in `string`, optionally filtering by `filter_type`. Returns a list of slugs that are referenced in `string`.
""" """
def get_reference_ids(string) do def get_reference_ids(string) do
string string
@ -67,7 +65,7 @@ defmodule ChiyaWeb.References do
def replace_references(string) do def replace_references(string) do
string string
|> get_references() |> get_references()
|> validate_references() |> Enum.map(&validate_reference/1)
|> Enum.reduce(string, fn {placeholder, slug, title, valid}, s -> |> Enum.reduce(string, fn {placeholder, slug, title, valid}, s ->
String.replace(s, placeholder, get_link(slug, title, valid)) String.replace(s, placeholder, get_link(slug, title, valid))
end) end)
@ -78,7 +76,7 @@ defmodule ChiyaWeb.References do
end end
defp get_link_class(valid) do defp get_link_class(valid) do
if valid, do: "{:.invalid}", else: "" if not valid, do: "{:.invalid}", else: ""
end end
defp map_to_tuple([placeholder, note_slug]), defp map_to_tuple([placeholder, note_slug]),