diff options
Diffstat (limited to 'lib/pleroma/web/common_api/utils.ex')
-rw-r--r-- | lib/pleroma/web/common_api/utils.ex | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/lib/pleroma/web/common_api/utils.ex b/lib/pleroma/web/common_api/utils.ex index b649ee188..b370a8fb7 100644 --- a/lib/pleroma/web/common_api/utils.ex +++ b/lib/pleroma/web/common_api/utils.ex @@ -38,9 +38,9 @@ defmodule Pleroma.Web.CommonAPI.Utils do end end - def make_content_html(status, mentions, attachments) do + def make_content_html(status, mentions, attachments, tags) do status - |> format_input(mentions) + |> format_input(mentions, tags) |> add_attachments(attachments) end @@ -57,11 +57,22 @@ defmodule Pleroma.Web.CommonAPI.Utils do Enum.join([text | attachment_text], "<br>\n") end - def format_input(text, mentions) do + def format_input(text, mentions, tags) do HtmlSanitizeEx.strip_tags(text) |> Formatter.linkify |> String.replace("\n", "<br>\n") |> add_user_links(mentions) + |> add_tag_links(tags) + end + + def add_tag_links(text, tags) do + tags = tags + |> Enum.sort_by(fn ({tag, _}) -> -String.length(tag) end) + + Enum.reduce(tags, text, fn({full, tag}, text) -> + url = "#<a href='#{Pleroma.Web.base_url}/tag/#{tag}' rel='tag'>#{tag}</a>" + String.replace(text, full, url) + end) end def add_user_links(text, mentions) do |