Have the LLM use square bracketed links for internal references
This commit is contained in:
@@ -24,6 +24,10 @@ defmodule MusicLibrary.Chats.CollectionChat do
|
||||
|
||||
Collection catalog:
|
||||
#{collection_summary}
|
||||
|
||||
# Mentioning artists/albums
|
||||
|
||||
**IF YOU MENTION AN ARTIST NAME OR ALBUM NAME, wrap it in "[[name]]", for example "[[Steven Wilson]]"
|
||||
""")
|
||||
end
|
||||
end
|
||||
|
||||
@@ -120,19 +120,27 @@ defmodule MusicLibraryWeb.Markdown do
|
||||
end
|
||||
|
||||
defp open_links_in_new_tab(doc, target) do
|
||||
MDEx.Document.update_nodes(doc, MDEx.Link, fn %MDEx.Link{url: url, title: title, nodes: nodes} ->
|
||||
text = extract_text(nodes)
|
||||
MDEx.Document.update_nodes(doc, MDEx.Link, fn %MDEx.Link{url: url} = link ->
|
||||
if external_link?(url) do
|
||||
text = extract_text(link.nodes)
|
||||
|
||||
title_attr =
|
||||
if title != "" and title != nil, do: ~s( title="#{html_escape(title)}"), else: ""
|
||||
if link.title != "" and link.title != nil,
|
||||
do: ~s( title="#{html_escape(link.title)}"),
|
||||
else: ""
|
||||
|
||||
%MDEx.HtmlInline{
|
||||
literal:
|
||||
~s(<a href="#{html_escape(url)}" target="#{target}"#{title_attr}>#{html_escape(text)}</a>)
|
||||
}
|
||||
else
|
||||
link
|
||||
end
|
||||
end)
|
||||
end
|
||||
|
||||
defp external_link?(url), do: url =~ ~r"^https?://"
|
||||
|
||||
defp extract_text(nodes) when is_list(nodes), do: Enum.map_join(nodes, "", &extract_text/1)
|
||||
defp extract_text(%{literal: literal}), do: literal
|
||||
defp extract_text(%{nodes: nodes}), do: extract_text(nodes)
|
||||
|
||||
@@ -83,10 +83,11 @@ defmodule MusicLibraryWeb.MarkdownTest do
|
||||
assert result =~ ~s(href="http://example.com")
|
||||
end
|
||||
|
||||
test "adds target to double bracket links" do
|
||||
test "does not add target to internal links" do
|
||||
result = Markdown.to_html("Check [[Porcupine Tree]]", link_target: "_blank")
|
||||
|
||||
assert result =~ ~s(target="_blank")
|
||||
refute result =~ ~s(target="_blank")
|
||||
assert result =~ ~s(href="/collection?query=Porcupine+Tree")
|
||||
assert result =~ "Porcupine Tree</a>"
|
||||
end
|
||||
|
||||
|
||||
Reference in New Issue
Block a user