forked from AkkomaGang/akkoma
Remove custom emojis and trailing whitespaces from previews
This commit is contained in:
parent
1b1af4798a
commit
997f4a5e09
3 changed files with 20 additions and 5 deletions
|
@ -43,7 +43,7 @@ def emojify(text) do
|
||||||
|
|
||||||
def emojify(text, nil), do: text
|
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 ->
|
Enum.reduce(emoji, text, fn {emoji, file}, text ->
|
||||||
emoji = HTML.strip_tags(emoji)
|
emoji = HTML.strip_tags(emoji)
|
||||||
file = HTML.strip_tags(file)
|
file = HTML.strip_tags(file)
|
||||||
|
@ -51,14 +51,24 @@ def emojify(text, emoji) do
|
||||||
String.replace(
|
String.replace(
|
||||||
text,
|
text,
|
||||||
":#{emoji}:",
|
":#{emoji}:",
|
||||||
"<img height='32px' width='32px' alt='#{emoji}' title='#{emoji}' src='#{
|
if not strip do
|
||||||
MediaProxy.url(file)
|
"<img height='32px' width='32px' alt='#{emoji}' title='#{emoji}' src='#{
|
||||||
}' />"
|
MediaProxy.url(file)
|
||||||
|
}' />"
|
||||||
|
else
|
||||||
|
""
|
||||||
|
end
|
||||||
)
|
)
|
||||||
|> HTML.filter_tags()
|
|> HTML.filter_tags()
|
||||||
end)
|
end)
|
||||||
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
|
def get_emoji(text) when is_binary(text) do
|
||||||
Enum.filter(Emoji.get_all(), fn {emoji, _} -> String.contains?(text, ":#{emoji}:") end)
|
Enum.filter(Emoji.get_all(), fn {emoji, _} -> String.contains?(text, ":#{emoji}:") end)
|
||||||
end
|
end
|
||||||
|
@ -185,6 +195,9 @@ def finalize({subs, text}) do
|
||||||
end
|
end
|
||||||
|
|
||||||
def truncate(text, max_length \\ 200, omission \\ "...") do
|
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
|
if String.length(text) < max_length do
|
||||||
text
|
text
|
||||||
else
|
else
|
||||||
|
|
|
@ -103,7 +103,7 @@ def post(user, %{"status" => status} = data) do
|
||||||
attachments,
|
attachments,
|
||||||
tags,
|
tags,
|
||||||
get_content_type(data["content_type"]),
|
get_content_type(data["content_type"]),
|
||||||
Enum.member?([true, "true"], data["no_attachment_links"])
|
true
|
||||||
),
|
),
|
||||||
context <- make_context(inReplyTo),
|
context <- make_context(inReplyTo),
|
||||||
cw <- data["spoiler_text"],
|
cw <- data["spoiler_text"],
|
||||||
|
|
|
@ -124,6 +124,7 @@ defp scrub_html_and_truncate(%{data: %{"content" => content}} = object) do
|
||||||
|> HtmlEntities.decode()
|
|> HtmlEntities.decode()
|
||||||
|> String.replace(~r/<br\s?\/?>/, " ")
|
|> String.replace(~r/<br\s?\/?>/, " ")
|
||||||
|> HTML.get_cached_stripped_html_for_object(object, __MODULE__)
|
|> HTML.get_cached_stripped_html_for_object(object, __MODULE__)
|
||||||
|
|> Formatter.demojify()
|
||||||
|> Formatter.truncate()
|
|> Formatter.truncate()
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -133,6 +134,7 @@ defp scrub_html_and_truncate(content) when is_binary(content) do
|
||||||
|> HtmlEntities.decode()
|
|> HtmlEntities.decode()
|
||||||
|> String.replace(~r/<br\s?\/?>/, " ")
|
|> String.replace(~r/<br\s?\/?>/, " ")
|
||||||
|> HTML.strip_tags()
|
|> HTML.strip_tags()
|
||||||
|
|> Formatter.demojify()
|
||||||
|> Formatter.truncate()
|
|> Formatter.truncate()
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue