aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/waev_web/templates/exports/show.html.eex2
-rw-r--r--lib/waev_web/views/exports_view.ex12
2 files changed, 13 insertions, 1 deletions
diff --git a/lib/waev_web/templates/exports/show.html.eex b/lib/waev_web/templates/exports/show.html.eex
index 9ac011e..6356804 100644
--- a/lib/waev_web/templates/exports/show.html.eex
+++ b/lib/waev_web/templates/exports/show.html.eex
@@ -26,7 +26,7 @@
<% _ -> %>
<% end %>
- <div><%= message.text %></div>
+ <div><%= highlight_urls(message.text) %></div>
<div class="message-date">
<%= message.date %>
</div>
diff --git a/lib/waev_web/views/exports_view.ex b/lib/waev_web/views/exports_view.ex
index c4a1b59..4fc9a9e 100644
--- a/lib/waev_web/views/exports_view.ex
+++ b/lib/waev_web/views/exports_view.ex
@@ -22,4 +22,16 @@ defmodule WaevWeb.ExportsView do
<img class="avatar <%= modifier %>" src="<%= Routes.exports_path(@conn, :get_avatar, @id, party.name) %>" />
"""
end
+
+ def highlight_urls(nil), do: ""
+ def highlight_urls(text) do
+ url_re = ~r/https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)/
+
+ url_re
+ |> Regex.scan(text)
+ |> Enum.reduce(text, fn [url|_], t ->
+ String.replace(t, url, "<a target=\"_blank\" href=#{url}>#{url}</a>", global: false)
+ |> raw()
+ end)
+ end
end