diff options
author | rinpatch <rinpatch@sdf.org> | 2019-01-18 10:28:19 +0300 |
---|---|---|
committer | rinpatch <rinpatch@sdf.org> | 2019-01-18 10:28:19 +0300 |
commit | 997f4a5e09f8531f95ba3f13986b9dda583d046a (patch) | |
tree | 219c4450b7e4c0f9c5ce38ebda992052f7bc4730 /lib | |
parent | 1b1af4798a74c4ab357140ef2c5928dd9ebd3221 (diff) | |
download | pleroma-997f4a5e09f8531f95ba3f13986b9dda583d046a.tar.gz |
Remove custom emojis and trailing whitespaces from previews
Diffstat (limited to 'lib')
-rw-r--r-- | lib/pleroma/formatter.ex | 21 | ||||
-rw-r--r-- | lib/pleroma/web/common_api/common_api.ex | 2 | ||||
-rw-r--r-- | lib/pleroma/web/metadata/opengraph.ex | 2 |
3 files changed, 20 insertions, 5 deletions
diff --git a/lib/pleroma/formatter.ex b/lib/pleroma/formatter.ex index 63e0acb21..2696f41c0 100644 --- a/lib/pleroma/formatter.ex +++ b/lib/pleroma/formatter.ex @@ -43,7 +43,7 @@ defmodule Pleroma.Formatter do def emojify(text, nil), do: text - def emojify(text, emoji) do + def emojify(text, emoji, strip \\ false) do Enum.reduce(emoji, text, fn {emoji, file}, text -> emoji = HTML.strip_tags(emoji) file = HTML.strip_tags(file) @@ -51,14 +51,24 @@ defmodule Pleroma.Formatter do String.replace( text, ":#{emoji}:", - "<img height='32px' width='32px' alt='#{emoji}' title='#{emoji}' src='#{ - MediaProxy.url(file) - }' />" + if not strip do + "<img height='32px' width='32px' alt='#{emoji}' title='#{emoji}' src='#{ + MediaProxy.url(file) + }' />" + else + "" + end ) |> HTML.filter_tags() end) end + def demojify(text) do + emojify(text, Emoji.get_all(), true) + end + + def demojify(text, nil), do: text + def get_emoji(text) when is_binary(text) do Enum.filter(Emoji.get_all(), fn {emoji, _} -> String.contains?(text, ":#{emoji}:") end) end @@ -185,6 +195,9 @@ defmodule Pleroma.Formatter do end def truncate(text, max_length \\ 200, omission \\ "...") do + # Remove trailing whitespace + text = Regex.replace(~r/([^ \t\r\n])([ \t]+$)/u, text, "\\g{1}") + if String.length(text) < max_length do text else diff --git a/lib/pleroma/web/common_api/common_api.ex b/lib/pleroma/web/common_api/common_api.ex index 2902905fd..9a748d65e 100644 --- a/lib/pleroma/web/common_api/common_api.ex +++ b/lib/pleroma/web/common_api/common_api.ex @@ -103,7 +103,7 @@ defmodule Pleroma.Web.CommonAPI do attachments, tags, get_content_type(data["content_type"]), - Enum.member?([true, "true"], data["no_attachment_links"]) + true ), context <- make_context(inReplyTo), cw <- data["spoiler_text"], diff --git a/lib/pleroma/web/metadata/opengraph.ex b/lib/pleroma/web/metadata/opengraph.ex index 43303859c..1028e35c2 100644 --- a/lib/pleroma/web/metadata/opengraph.ex +++ b/lib/pleroma/web/metadata/opengraph.ex @@ -124,6 +124,7 @@ defmodule Pleroma.Web.Metadata.Providers.OpenGraph do |> HtmlEntities.decode() |> String.replace(~r/<br\s?\/?>/, " ") |> HTML.get_cached_stripped_html_for_object(object, __MODULE__) + |> Formatter.demojify() |> Formatter.truncate() end @@ -133,6 +134,7 @@ defmodule Pleroma.Web.Metadata.Providers.OpenGraph do |> HtmlEntities.decode() |> String.replace(~r/<br\s?\/?>/, " ") |> HTML.strip_tags() + |> Formatter.demojify() |> Formatter.truncate() end |