diff --git a/lib/pleroma/formatter.ex b/lib/pleroma/formatter.ex index 51d08c5ee..048c032ed 100644 --- a/lib/pleroma/formatter.ex +++ b/lib/pleroma/formatter.ex @@ -91,6 +91,10 @@ def get_emoji(text) when is_binary(text) do def get_emoji(_), do: [] + def html_escape({text, mentions, hashtags}, type) do + {html_escape(text, type), mentions, hashtags} + end + def html_escape(text, "text/html") do HTML.filter_tags(text) end diff --git a/lib/pleroma/web/common_api/utils.ex b/lib/pleroma/web/common_api/utils.ex index 20123854d..e4b9102c5 100644 --- a/lib/pleroma/web/common_api/utils.ex +++ b/lib/pleroma/web/common_api/utils.ex @@ -186,9 +186,9 @@ def format_input(text, "text/markdown", options) do options = Keyword.put(options, :mentions_escape, true) text - |> Formatter.html_escape("text/html") |> Formatter.linkify(options) |> (fn {text, mentions, tags} -> {Earmark.as_html!(text), mentions, tags} end).() + |> Formatter.html_escape("text/html") end def make_note_data( diff --git a/test/web/common_api/common_api_utils_test.exs b/test/web/common_api/common_api_utils_test.exs index dc7b4c229..684f2a23f 100644 --- a/test/web/common_api/common_api_utils_test.exs +++ b/test/web/common_api/common_api_utils_test.exs @@ -104,6 +104,18 @@ test "works for bare text/markdown" do {output, [], []} = Utils.format_input(text, "text/markdown") assert output == expected + + text = """ + > cool quote + + by someone + """ + + expected = "

cool quote

\n
\n

by someone

\n" + + {output, [], []} = Utils.format_input(text, "text/markdown") + + assert output == expected end test "works for text/markdown with mentions" do @@ -113,11 +125,11 @@ test "works for text/markdown with mentions" do text = "**hello world**\n\n*another @user__test and @user__test google.com paragraph*" expected = - "

hello world

\n

another @user__test and @user__test google.com paragraph

\n" + }\" class=\"u-url mention\" href=\"http://foo.com/user__test\">@user__test google.com paragraph

\n" {output, _, _} = Utils.format_input(text, "text/markdown")