+ end
+
+ @doc "changes scheme:... urls to html links"
+ def add_links({subs, text}) do
+ links =
+ text
+ |> String.split([" ", "\t", "<br>"])
+ |> Enum.filter(fn word -> String.starts_with?(word, @valid_schemes) end)
+ |> Enum.filter(fn word -> Regex.match?(@link_regex, word) end)
+ |> Enum.map(fn url -> {Ecto.UUID.generate(), url} end)
+ |> Enum.sort_by(fn {_, url} -> -String.length(url) end)
+
+ uuid_text =
+ links
+ |> Enum.reduce(text, fn {uuid, url}, acc -> String.replace(acc, url, uuid) end)
+
+ subs =
+ subs ++
+ Enum.map(links, fn {uuid, url} ->
+ {uuid, "<a href=\"#{url}\">#{url}</a>"}
+ end)