summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/pleroma/formatter.ex4
-rw-r--r--lib/pleroma/web/activity_pub/object_validators/audio_video_validator.ex2
-rw-r--r--lib/pleroma/web/common_api/utils.ex2
-rw-r--r--priv/scrubbers/default.ex2
-rw-r--r--test/pleroma/web/common_api/utils_test.exs10
-rw-r--r--test/pleroma/web/common_api_test.exs2
6 files changed, 14 insertions, 8 deletions
diff --git a/lib/pleroma/formatter.ex b/lib/pleroma/formatter.ex
index 61906dda6..1be12055f 100644
--- a/lib/pleroma/formatter.ex
+++ b/lib/pleroma/formatter.ex
@@ -121,6 +121,10 @@ defmodule Pleroma.Formatter do
end
end
+ def markdown_to_html(text) do
+ Earmark.as_html!(text)
+ end
+
def html_escape({text, mentions, hashtags}, type) do
{html_escape(text, type), mentions, hashtags}
end
diff --git a/lib/pleroma/web/activity_pub/object_validators/audio_video_validator.ex b/lib/pleroma/web/activity_pub/object_validators/audio_video_validator.ex
index eaf94797a..9b38aa4c2 100644
--- a/lib/pleroma/web/activity_pub/object_validators/audio_video_validator.ex
+++ b/lib/pleroma/web/activity_pub/object_validators/audio_video_validator.ex
@@ -95,7 +95,7 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.AudioVideoValidator do
when is_binary(content) do
content =
content
- |> Earmark.as_html!()
+ |> Pleroma.Formatter.markdown_to_html()
|> Pleroma.HTML.filter_tags()
Map.put(data, "content", content)
diff --git a/lib/pleroma/web/common_api/utils.ex b/lib/pleroma/web/common_api/utils.ex
index b434a069e..be86009af 100644
--- a/lib/pleroma/web/common_api/utils.ex
+++ b/lib/pleroma/web/common_api/utils.ex
@@ -294,7 +294,7 @@ defmodule Pleroma.Web.CommonAPI.Utils do
def format_input(text, "text/markdown", options) do
text
|> Formatter.mentions_escape(options)
- |> Earmark.as_html!()
+ |> Formatter.markdown_to_html()
|> Formatter.linkify(options)
|> Formatter.minify("text/html")
|> Formatter.html_escape("text/html")
diff --git a/priv/scrubbers/default.ex b/priv/scrubbers/default.ex
index 0893b17e5..4694a92a5 100644
--- a/priv/scrubbers/default.ex
+++ b/priv/scrubbers/default.ex
@@ -59,6 +59,8 @@ defmodule Pleroma.HTML.Scrubber.Default do
Meta.allow_tag_with_this_attribute_values(:span, "class", ["h-card"])
Meta.allow_tag_with_these_attributes(:span, [])
+ Meta.allow_tag_with_this_attribute_values(:code, "class", ["inline"])
+
@allow_inline_images Pleroma.Config.get([:markup, :allow_inline_images])
if @allow_inline_images do
diff --git a/test/pleroma/web/common_api/utils_test.exs b/test/pleroma/web/common_api/utils_test.exs
index c6abbbe84..ab6392b1f 100644
--- a/test/pleroma/web/common_api/utils_test.exs
+++ b/test/pleroma/web/common_api/utils_test.exs
@@ -178,13 +178,13 @@ defmodule Pleroma.Web.CommonAPI.UtilsTest do
test "raw HTML" do
code = ~s[<a href="http://example.org/">OwO</a><!-- what's this?-->]
{result, [], []} = Utils.format_input(code, "text/markdown")
- assert result == "<p>#{code}</p>"
+ assert result == ~s[<a href="http://example.org/">OwO</a>]
end
test "rulers" do
code = ~s[before\n\n-----\n\nafter]
{result, [], []} = Utils.format_input(code, "text/markdown")
- assert result == "<p>before</p><hr /><p>after</p>"
+ assert result == "<p>before</p><hr/><p>after</p>"
end
test "blockquote" do
@@ -204,7 +204,7 @@ defmodule Pleroma.Web.CommonAPI.UtilsTest do
code = ~s[```\nputs "Hello World"\n```]
{result, [], []} = Utils.format_input(code, "text/markdown")
- assert result == ~s[<pre><code class="">puts &quot;Hello World&quot;</code></pre>]
+ assert result == ~s[<pre><code>puts &quot;Hello World&quot;</code></pre>]
end
test "lists" do
@@ -227,9 +227,9 @@ defmodule Pleroma.Web.CommonAPI.UtilsTest do
assert result == ~s[<p><strong>aaaa~</strong></p>]
# strikethrough
- code = ~s[<del>aaaa~</del>]
+ code = ~s[~~aaaa~~~]
{result, [], []} = Utils.format_input(code, "text/markdown")
- assert result == ~s[<p><del>aaaa~</del></p>]
+ assert result == ~s[<p><del>aaaa</del>~</p>]
end
end
diff --git a/test/pleroma/web/common_api_test.exs b/test/pleroma/web/common_api_test.exs
index 585b2c174..c1b1af073 100644
--- a/test/pleroma/web/common_api_test.exs
+++ b/test/pleroma/web/common_api_test.exs
@@ -558,7 +558,7 @@ defmodule Pleroma.Web.CommonAPITest do
object = Object.normalize(activity)
- assert object.data["content"] == "<p><b>2hu</b></p>alert(&#39;xss&#39;)"
+ assert object.data["content"] == "<p><b>2hu</b></p>"
assert object.data["source"] == post
end