references: fix docs, fix invalid class, improve structure
This commit is contained in:
parent
2ac2e1ec01
commit
1de3687693
1 changed files with 23 additions and 25 deletions
|
@ -22,38 +22,36 @@ 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 =
|
||||||
case note do
|
case note do
|
||||||
nil -> false
|
nil -> false
|
||||||
_ -> true
|
_ -> true
|
||||||
end
|
end
|
||||||
|
|
||||||
# If a custom title was defined, use it,
|
# If a custom title was defined, use it,
|
||||||
# otherwise use the note's title
|
# otherwise use the note's title
|
||||||
title =
|
title =
|
||||||
cond do
|
cond do
|
||||||
custom_title != slug ->
|
custom_title != slug ->
|
||||||
custom_title
|
custom_title
|
||||||
|
|
||||||
valid ->
|
valid ->
|
||||||
note.name
|
note.name
|
||||||
|
|
||||||
true ->
|
true ->
|
||||||
slug
|
slug
|
||||||
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]),
|
||||||
|
|
Loading…
Reference in a new issue